реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> random, builder 6
toweroff
сообщение Jan 30 2011, 23:19
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



есть задача - получить случайное число
приложение взаимодействует с пользователем, который спорадически нажимает кнопу "запуск"
могу я, используя что-то типа

Код
double start, end;
start = (double) Time();

....

....

end = (double) Time();

end -= start;


получить в end количество миллисекунд между событиями (пусть и с разбросом, не с точностью 1мс) и использовать это значение, как случайное?
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Jan 30 2011, 23:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



А чем rand() не угодил?
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jan 30 2011, 23:39
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(aaarrr @ Jan 31 2011, 02:27) *
А чем rand() не угодил?

да черт его знает... вроде рандомайзлю его, а все равно первые значения практически всегда "кладет" в первую половину промежутка... и с завидной постоянностью
да и все равно - это же один фиг полином считается, а тут вроде как точно случайное число... не нажмет же человек точно до миллисекунды клавишу? а уж тем более разные люди
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Jan 31 2011, 00:42
Сообщение #4


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Цитата
вроде рандомайзлю его, а все равно первые значения практически всегда "кладет" в первую половину промежутка
вы там точно всё по науке рандомайзлите? я не помню принемает ли параметр функция Randomize(); но по науке это виглядит как-то так
http://progs.biz/cpp/cpp/lessons/011.aspx

Вы свою задержку между нажатиями туда можете в srand засунуть, чтоб пнуть полином. Но вообще туда очень хорошо ложится именно значение таймера т.к. два раза запустить программу или функцию в одно и тоже время уж точно ни у кого не получится и на выходе будет "более случайное" число, чем длительность нажатия кнопки(которая всё равно будет что называется "где-то в районе..."и в чистом виде её использовать уж точно не стоит);


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
baralgin
сообщение Jan 31 2011, 09:49
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 92
Регистрация: 23-12-08
Из: Кишинёв
Пользователь №: 42 680



Попробуйте внешний ГПСЧ, например xor128. В качестве старта можно использовать результат QueryPerformanceCounter. Последняя даёт 64 бита, у xor128 128 бит - два оставшихся(uint32) инициализируем константами (например). Качество такой связки должно быть повыше стандартного генератора и "простого" таймера.
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jan 31 2011, 09:54
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(sigmaN @ Jan 31 2011, 03:42) *
вы там точно всё по науке рандомайзлите? я не помню принемает ли параметр функция Randomize()

вроде как нет, использует системный таймер

Цитата
Вы свою задержку между нажатиями туда можете в srand засунуть, чтоб пнуть полином.

так чтобы первый раз пнуть, нужно флаг вводить -- пинали/не пинали.....

Цитата
в одно и тоже время уж точно ни у кого не получится

там как раз хорошо все, процесс тоже зависит от физических параметров, точно никогда не будет выполняться... да и дядя Вася пока подойдет, удостоверится, заменит "рабочее тело", настройки поменяет, опять "ткнет пальцем"....


Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 23:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016