Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
rubodon
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 19
#1

Чайник VS Случайные числа - C++

11.09.2012, 20:01. Просмотров 833. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <cstdlib>
 
using namespace std;
 
int main()
{
while(1==1){
 
    Sleep(2000);
    srand(time(NULL));
    int a = 100 ; int b = 1000 ; int c ;
    c = rand() % (b - a + 1) + a;
 
    cout << c;
}
}
Я хочу получать каждый раз случайное число в диапазоне от 100 до 1000. Но получаю примерно вот что:
100
112
124
135
...
869
881
...
1000
102
125
136
...

и так далее. Как сделать так, чтобы было например:

125
101
859
880
251
904
487
...
и тд и тп. Пожалуйста, помогите. Уже всю голову сломал.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 20:01     Чайник VS Случайные числа
Посмотрите здесь:

Случайные числа C++
Случайные числа C++
Случайные числа C++
случайные числа C++
C++ Случайные числа
C++ Случайные числа.
C++ Случайные числа от -8 к 8
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2012, 20:07     Чайник VS Случайные числа #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <random>
#include <iostream>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(100, 1000);
    for(std::size_t i = 0; i < 10; ++i)
        std::cout << dis(gen) << std::endl;
    return 0;
}
rubodon
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 19
11.09.2012, 20:20  [ТС]     Чайник VS Случайные числа #3
soon, вроде бы работает как мне надо, спасибо. Если не трудно, прокомментируйте, пожалуйста, представленный Вами код.
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2012, 20:38     Чайник VS Случайные числа #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <random>
#include <iostream>
 
int main()
{
    std::random_device rd; // Класс, включающий в себя недетерминированную функцию(operator()), которая возвращает случайное число
    std::mt19937 gen(rd()); // Генератор "Вихрь Мерсена". Инициализируется случайным значением из random_device
    std::uniform_int_distribution<> dis(100, 1000); // Задаем границы для случайных чисел
    for(std::size_t i = 0; i < 10; ++i)
        std::cout << dis(gen) << std::endl; // Выводим
    return 0;
}
PSIAlt
86 / 86 / 8
Регистрация: 19.06.2012
Сообщений: 245
11.09.2012, 20:53     Чайник VS Случайные числа #5
Насчем с того что комп может генерить только ПСЕВДОслучайные числа. Использование комбинации srand+rand тем более от времени считается слабо случайным. К томуже, алгоритмы случайных числел основаны на сдвигах итд, и в конце концов они имеют период повторения.
Это большая трабла в индустрии вообще, особенно в шифровальных делах. Intel вкладывает бабос чтобы делать модуля в ЦПУ, которые умеют генерить тру-случайные числа используя флустрации температуры, ну и т.д. и т.п., короче если нужны _реально_ случайные числа то тут проблема.
NoMasters
Псевдослучайный
1743 / 1086 / 71
Регистрация: 13.09.2011
Сообщений: 3,110
11.09.2012, 21:00     Чайник VS Случайные числа #6
Цитата Сообщение от PSIAlt Посмотреть сообщение
Насчем с того что комп может генерить только ПСЕВДОслучайные числа.
Давайте тогда сразу перейдём к тому, что совершенно случайное число получить вообще невозможно, чего уж там. У вихря Мерсенна, который посоветовал soon, период составляет 2^19937-1, мало что ли?
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
11.09.2012, 21:06     Чайник VS Случайные числа #7
Цитата Сообщение от PSIAlt Посмотреть сообщение
Насчем с того что комп может генерить только ПСЕВДОслучайные числа. Использование комбинации srand+rand тем более от времени считается слабо случайным. К томуже, алгоритмы случайных числел основаны на сдвигах итд, и в конце концов они имеют период повторения.
Это большая трабла в индустрии вообще, особенно в шифровальных делах. Intel вкладывает бабос чтобы делать модуля в ЦПУ, которые умеют генерить тру-случайные числа используя флустрации температуры, ну и т.д. и т.п., короче если нужны _реально_ случайные числа то тут проблема.
Я точно не помню, но есть какой-то сайт, который генерирует ДЕЙСТВИТЕЛЬНО случайные числа на основе атмосферных шумов. В принципе, в каком-то серьёзном проекте с подключением к интернету вполне реально использовать API с этого сайта. Ещё раз повторю - подробности не помню, но тема мелькала на Хабре.
soon
2537 / 1302 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2012, 21:14     Чайник VS Случайные числа #8
PreFX, random.org
Но я солидарен с NoMasters, и также считаю, что любое сгенерированное число можно предсказать. Вопрос лишь в том, какой объем информации необходимо для этого обработать.
Thinker
11.09.2012, 21:55
  #9

Не по теме:

есть такое направление в философии - детерминизм, который утверждает, что ничего случайного нет, все имеет причинно-следственную связь. Если так, то не существует случайных чисел. Так что это вопрос философский.

PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
11.09.2012, 21:59     Чайник VS Случайные числа #10
soon, если бы наши компьютеры могли принимать множество специфических данных ( как то активность мозга, который ещё почти не изучен, или движение тех же квантов) и обрабатывать их, тогда мы могли бы предугадать всё, что угодно ( но куда уж нам). Однако до тех пор ( ещё лет эдак 3000) мы спокойно можем утверждать, что такие числа случайны.

Добавлено через 1 минуту
Хотя я сам уверен в том, что случайности не случайны (с)
OhMyGodSoLong
~ Эврика! ~
1243 / 992 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.09.2012, 22:49     Чайник VS Случайные числа #11
Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

есть такое направление в философии - детерминизм, который утверждает, что ничего случайного нет, все имеет причинно-следственную связь. Если так, то не существует случайных чисел. Так что это вопрос философский.

Не по теме:

А есть такое направление в физике: квантовая механика, которая утверждает, что на достаточно маленьких масштабах, как бы точно мы не смотрели, мы не сможем предсказать точно поведение частичек.

NoMasters
11.09.2012, 22:53
  #12

Не по теме:

Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
квантовая механика
Они фаталисты просто

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 23:50     Чайник VS Случайные числа
Еще ссылки по теме:

C++ Случайные числа
Случайные числа C++
Случайные числа C++
Случайные числа от 1 до 9 C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Dani
11.09.2012, 23:50     Чайник VS Случайные числа
  #13

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение
есть такое направление в философии - детерминизм, который утверждает, что ничего случайного нет, все имеет причинно-следственную связь. Если так, то не существует случайных чисел. Так что это вопрос философский.
1) эти числа - псевдослучайные;
2) я где-то когда-то читал, что случайные числа получаются, то-ли из траектории движения фотонов, то-ли из еще чего-то, связанного с фотонами.

Yandex
Объявления
11.09.2012, 23:50     Чайник VS Случайные числа
Ответ Создать тему
Опции темы

Текущее время: 01:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru