Случайное число

Модератор: Модераторы разделов

KnupK
Сообщения: 65
ОС: openSUSE 10.2 x86_64

Случайное число

Сообщение KnupK »

:blush: Как получить сабж?В книге не нашел...
Язык C++
So allein will ich nicht sein....
Спасибо сказали:
Аватара пользователя
moog
Сообщения: 599
ОС: Archlinux

Re: Случайное число

Сообщение moog »

Купите нормальную книгу по программированию.
Спасибо сказали:
WiZ
Сообщения: 60

Re: Случайное число

Сообщение WiZ »

KnupK писал(а):
17.03.2007 09:30
:blush: Как получить сабж?В книге не нашел...
Язык C++
Давайте вы сначала будете искать в интернете, а потом, если уж не найдёте - спрашивать на форуме? int rand();
Arch / Linux-ck 64bit / xmonad / vim,opera,deadbeef,zsh /
Спасибо сказали:
Аватара пользователя
uptime
Сообщения: 1661
Статус: Drinker with computing problems
ОС: kubuntu 8.04

Re: Случайное число

Сообщение uptime »

Для получения собственно числа использовать rand().
Предварительно нужно рандомизировать стартовое число случайной последовательности (зено = seed), делается с помощью srand(), которой в качестве параметра можно передавать, например, текущее время.
The answer, my friend, is blowin' in the wind.
The answer is blowin' in the wind.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Случайное число

Сообщение v04bvs »

KnupK писал(а):
17.03.2007 09:30
:blush: Как получить сабж?В книге не нашел...
Язык C++

Без аппаратного генератора никак. Ну можно /dev/random юзать в крайнем случае.
Спасибо сказали:
Аватара пользователя
Denjs
Сообщения: 1685
ОС: SuSe 10.2

Re: Случайное число

Сообщение Denjs »

а ещё есть "алгоритмы получения псевдо-случайных чисел" )))
рыть яндекс - потому как говорят что rand() не выдерживает никакой критики по своим статистическим свойствам )

по крайне мере "ХорошийГенераторПсевдоСлучайныхЧисел" должен генерировать "равномерно-распределенные числа" (а если нам надо какое-то иное распределение получаемых чисел - это потом можно всегда преобразовать во что нужно) :happy:

копайте яндекс если вас int rand() не устраивает )))

вообще вопрос серьезный. Параметры хороших генераторов псевдослучайных чисел кажется приравниваются к гос.тайне :happy:
хотя для "их проблем" лучше использовать аппаратные генераторы :laugh:
QDroid - Среда исполнения и фреймворк для QtScript.
OTPD - Открытые драйвера промышленных принтеров чеков и этикеток (кроссплатформенная подсистема печати).
Спасибо сказали:
Аватара пользователя
Kasper_WPS
Сообщения: 312
ОС: Gentoo

Re: Случайное число

Сообщение Kasper_WPS »

KnupK писал(а):
17.03.2007 09:30
:blush: Как получить сабж?В книге не нашел...
Язык C++

Создание уникального имени файла Я уже задовал в этом разделе такой же вопрос! В поиск... Используется генератор на Си, доделать плевое дело, только я не спец в паласах.
Случайное число в пределах от a до b: a + rand() % (b+1-a)
Gentoo Linux - Stage1 - Core2 Q6600 Quad - 2008.0
Kernel: Gentoo-sources - 2.6.36 GCC 4.5.1
XOrg-server 1.9.2 (NVIDIA-9600GT), KDE4 4.5.4
Спасибо сказали:
Аватара пользователя
Kasper_WPS
Сообщения: 312
ОС: Gentoo

Re: Случайное число

Сообщение Kasper_WPS »

Denjs писал(а):
17.03.2007 14:51
а ещё есть "алгоритмы получения псевдо-случайных чисел" )))
рыть яндекс - потому как говорят что rand() не выдерживает никакой критики по своим статистическим свойствам )

по крайне мере "ХорошийГенераторПсевдоСлучайныхЧисел" должен генерировать "равномерно-распределенные числа" (а если нам надо какое-то иное распределение получаемых чисел - это потом можно всегда преобразовать во что нужно) :happy:

копайте яндекс если вас int rand() не устраивает )))

вообще вопрос серьезный. Параметры хороших генераторов псевдослучайных чисел кажется приравниваются к гос.тайне :happy:
хотя для "их проблем" лучше использовать аппаратные генераторы :laugh:


Мне как-то показывали книжку с таблицей равномерно распределенных случайных чисел, на двухстах листах, циферки, для выбора числа закрывают глаза, открывают страницу, тыкают пальцем. Вот чем Вам не алгоритм? :D
Gentoo Linux - Stage1 - Core2 Q6600 Quad - 2008.0
Kernel: Gentoo-sources - 2.6.36 GCC 4.5.1
XOrg-server 1.9.2 (NVIDIA-9600GT), KDE4 4.5.4
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Случайное число

Сообщение Uncle_Theodore »

В зависимости от того, надо вам шашечки или ехать, надо читать /dev/random или /dev/urandom (если нужны действительно случайные биты). Случайные числа можно получить только из шума.
А если сдать лабу и забыть, то можно пользоваться средствами C++. Алгоритмы изготовления "случайных" чисел очень просты, но ничего случайного в этих числах нет.
Спасибо сказали:
Аватара пользователя
elide
Бывший модератор
Сообщения: 2421
Статус: Übermensch
ОС: лялих

Re: Случайное число

Сообщение elide »

/dev/random или /udev/random
maybe /dev/urandom ?
кстати, довольно интересные факты: http://vitus-wagner.livejournal.com/141948.html
слава роботам!
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Случайное число

Сообщение Uncle_Theodore »

elide писал(а):
17.03.2007 22:38
/dev/random или /udev/random
maybe /dev/urandom ?
кстати, довольно интересные факты: http://vitus-wagner.livejournal.com/141948.html

Поправил, сенькс.
Можно прогнать и более интересные тесты на равномерную распределенность того, что читается с рэндомных девайсов. Мы со студнями делали прошлой осенью. Достаточно интересные графики получаются.
Спасибо сказали:
Аватара пользователя
alastor
Сообщения: 844
Статус: ARCH'еноид
ОС: Arch Linux current

Re: Случайное число

Сообщение alastor »

Помнится, разработчики какой-то из *BSD попросили всех пользователей присылать случайно набранные строки, как раз для улучшения качества случайного генератора :)
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Случайное число

Сообщение serzh-z »

(KnupK @ Mar 17 2007, в 09:30) писал(а):Как получить сабж?
Вывод netstat чем не случайное число... Вам смешно, а разработчки Firefox так не считают. ;)
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: Случайное число

Сообщение promov »

Друзья! Дабы не создавать новую тему, прошу просвятит меня в этой. Смотрите, вот программа

Код: Выделить всё

#include <stdio.h>
#include <stdlib.h>

int main ()
{
 int a, i;
 srand (1337087948);
  for (i= 0; i<= 1; ++ i){
   a= rand();
   printf ("%i\n", a);
  }
 return 0;
}


Результаты работы этой программы, сказать прямо, обескураживают. ОНа всегда выдаёт один и тот же результат. И когда её переименовываешь, и в другом окне запускаешь, результат всегда один и тот же:
Число 254512044 и число 658784713. От генератора случайных чисел я, признаться, ожидал большей непредсказуемости.

То, каким будет первое значение переменной а, зависит от аргумента, переданного нами в функцию srand. А теперь, собственноо вопрос: от чего зависит последующие значения переменной а?

Если тоже от этого аргумента- это ещё куда ни шло, с этим я смирюсь- в качестве его я смогу передавать туда текущее время (правда, я не знаю, как это делать), а коль скоро время разно, то можно надеяться, что и значения переменной а будут тоже различаться. Но! Если значение переменной а зависит от предыдущего значения а, тогда это очень плохо. Получается, если однажды в программе первое а стало равно х и все последующие значения а приняли какие-то значание и в другой программе первое а приняло значение х, то все последующие значения а я смогу точно назвать до последней цифры- они будут такие же, как и в первой программе. Какая же это случайность? Вполне даже предсказуемые значения. Это-то вот и плохо. ПРошу развеять мои сомнения.

А в книгах на этот счёт мало что сказано, типа:"int rand (void) возвращает случайное число в диапазоне [0, RAND_MAX], где RAND_MAX определён в файле stdlib.h и имеет миимальное значение 32767. См. также функцию srand". Всё.
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
Liksys
Сообщения: 2910

Re: Случайное число

Сообщение Liksys »

srand() передай время текущее! Читай предыдущие посты!
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: Случайное число

Сообщение promov »

Так я читал всё. Передам я текущее время. Дело-то не в этом. Дело-то в том на что этот аргумент будет влиятьпрямо , но не косвенно: на начальное значение генератора случайных чисел или на все значения, которые генератор случайных чисел вырабатывает в текущей программе?
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Случайное число

Сообщение Uncle_Theodore »

promov писал(а):
29.11.2007 16:08
Так я читал всё. Передам я текущее время. Дело-то не в этом. Дело-то в том на что этот аргумент будет влиятьпрямо , но не косвенно: на начальное значение генератора случайных чисел или на все значения, которые генератор случайных чисел вырабатывает в текущей программе?

На все значения, возвращаемые функцией rand() до тех пор, пока Вы не вызовете srand() снова.
Спасибо сказали:
v04bvs
Сообщения: 636
ОС: Debian GNU/Linux

Re: Случайное число

Сообщение v04bvs »

promov писал(а):
29.11.2007 15:53
Какая же это случайность?

Это псевдослучайность.
Спасибо сказали:
Аватара пользователя
ber
Сообщения: 13
ОС: Gentoo

Re: Случайное число

Сообщение ber »

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

Код: Выделить всё

#include <stdlib.h>
#include <time.h>

int main()
{
      srand(time(NULL));
}

далее по тексту
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: Случайное число

Сообщение promov »

Uncle_Theodore писал(а):
29.11.2007 16:17
promov писал(а):
29.11.2007 16:08
Так я читал всё. Передам я текущее время. Дело-то не в этом. Дело-то в том на что этот аргумент будет влиятьпрямо , но не косвенно: на начальное значение генератора случайных чисел или на все значения, которые генератор случайных чисел вырабатывает в текущей программе?

На все значения, возвращаемые функцией rand() до тех пор, пока Вы не вызовете srand() снова.

Прояснено. Спасибо!
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
drBatty
Сообщения: 8735
Статус: GPG ID: 4DFBD1D6 дом горит, козёл не видит...
ОС: Slackware-current

Re: Случайное число

Сообщение drBatty »

promov писал(а):
29.11.2007 17:39
Прояснено.

Для математических программ всё-таки лучше rand() не использовать. Уж больно она неравномерная и не случайная в большинстве библиотек. Для не слишком сложных случаев лучше будет x(i+1) = (x(i) * 29 + 0x7A4537ED) mod 2^32 Эта формула даёт псевдослучайное число от 0 до 2^32-1 причём её период достаточно большой.
http://emulek.blogspot.ru/ Windows Must Die
Учебник по sed зеркало в github

Скоро придёт
Осень
Спасибо сказали:
edranovdenis
Сообщения: 135
ОС: main mdv2006

Re: Случайное число

Сообщение edranovdenis »

в чем-то вопрос филосовский...
теоритически, нет ничего случайного, все взаимосвязано. вот только просчитать ВСЕ зависимости мы не в состоянии. вот тут и беруться случайности. например, возьмем две или более относительно замкнутых, и логически последовательных системы. поведение этих систем внутри себя и при взаимодействии с внешней средой будет всегда определенным, т.е. лишеным случайности. в случае взаимодействия нескольких таких систем может появиться, а может и нет эффект случайности. необходимыми условиями появления такого эффекта будут ассинхронность поведения и ассинхронность времени. например: рулетка - в ее поведении нет случайности, и человек не способный просчитать ее поведение. равномерное распределение достигается же ведением статистики и изменением размеров полей на рулетке. (мухлёж). вот такие мысли...
Живая мысль подобна реке бегущей с гор - будучи полноводной, не засохнет, но непременно впадет в океан.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Случайное число

Сообщение Uncle_Theodore »

Математически случайное число можно получить из белого теплового шума. Который и собирается в /dev/random
Кроме того, квантовая динамика отрицает детерминированность. Поэтому вышеприведенные рассуждения о детерминированности замкнутых систем неверны.
Спасибо сказали:
Аватара пользователя
nesk
Сообщения: 2268
Статус: Линукссаксовец
ОС: MS Windows XP Home SP3

Re: Случайное число

Сообщение nesk »

да простят меня модераторы.
немного бородатого юмора, что бы разрядит обстановку.


Изображение
* А здесь у нас генератор случайных чисел.
* Девять, девять, девять, девять, девять, девять...
* А вы уверены, что они случайные?
* В этом проблема. Со случайностями никогда нельзя быть уверенным.

Изображение
"честно выбрано броском игрального кубика. Гарантировано вернёт случайное"
Внимание: У меня под рукой нет машины с Linux. Я не использую эту ОС. Ответы я даю либо по памяти, либо мне помогает гугл. Тщательно читайте маны по тем командам и конфигурационным файлам, которые я упоминаю.

0xDEFEC8ED
Спасибо сказали:
edranovdenis
Сообщения: 135
ОС: main mdv2006

Re: Случайное число

Сообщение edranovdenis »

ПС: т.е. для получения случайности необходимо найти места взаимодействия двух или более таких систем с высоким значением условий необходимых для возникновения эффекта.
Живая мысль подобна реке бегущей с гор - будучи полноводной, не засохнет, но непременно впадет в океан.
Спасибо сказали:
Аватара пользователя
Zeus
Сообщения: 694

Re: Случайное число

Сообщение Zeus »

edranovdenis писал(а):
03.12.2007 17:01
в чем-то вопрос филосовский...
теоритически, нет ничего случайного, все взаимосвязано.

При изучении диамата есть целый раздел: "Случайность и закономерность".
Утверждается, что случайность, как и детерминированность объективно присущи материальному миру.
Спасибо сказали:
edranovdenis
Сообщения: 135
ОС: main mdv2006

Re: Случайное число

Сообщение edranovdenis »

замкнутые системы - условны. случайность - условна, по отношению к одной или нескольким системам. если удается рассмотреть группу систем как одну, то взаимодействия между ними уже определены. определености - условны.
имею мнение, что квантовая механика - частный случай кибернетики...
Живая мысль подобна реке бегущей с гор - будучи полноводной, не засохнет, но непременно впадет в океан.
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Случайное число

Сообщение Uncle_Theodore »

edranovdenis писал(а):
03.12.2007 20:13
имею мнение, что квантовая механика - частный случай кибернетики...

Вы его, конечно, имейте, но волновая функция коллапсирует к случайному собственному значению оператора измерения. Вероятность выпадения конкретного значения (измерения характеристики системы) зависит от квадрата модуля коэффициента функции в разложении ее по собственным векторам этого оператора.
Спасибо сказали:
promov
Сообщения: 384
Статус: Участник
ОС: Debian GNU/Linux

Re: Случайное число

Сообщение promov »

Друзья, раз уж вы продолжаете разговор, прояснили бы, что такое генератор случайных чисел. Я это спрашиваю потому, что некоторые ребята сомневаются в том, что числа, возвращаемые им настолько случайны, что их можно использовать именно как случайные без всяких дополнительных оговорок.
Теперь о моей готовности воспринять такие сведения.
Давно я написал маленькую программу на Turbo Pascal, которая печатала n целых положительных неповторяющихся чисел, каждое из которых было не больше n- это псевдослучайность. В общем, каждое число по сути было значением функции f (x), где x- предыдущее напечатанное число. Функция было сложновата. не то, что f(x)= x+1. Но всё-таки, если число было, допустим 34, то это же число второй раз выпасть не могло, пока все остальноые числа не выпадут. Я использовал, помнится, n= 50. Понятно, что если напечатано 48 чисел, то выпадение 49 мы предскажем с вероятностью не 2%, а 50%.
Если генератор случайных чисел- аналог такой программы, то это одно, а если он аналог мешка с n пронумерованными шарами, и каждый раз мы вытаскиваем по одному шару, то это совсем другое дело, это гораздо лучше.
Зачем хорёк пошел в ларёк, зачем барсук полез на сук...
Мораль легко уразуметь: зачем на бал пришёл медведь?
Спасибо сказали:
Аватара пользователя
Uncle_Theodore
Сообщения: 3339
ОС: Slackware 12.2, ArchLinux 64

Re: Случайное число

Сообщение Uncle_Theodore »

Сяшные генераторы случайных чисел -- это именно такие функции, как Ваша. Берется одно число (seed -- семя), называется X_0 и вычисляются числа вида
X_{n+1} = (a * X_n + b) mod m,
где a, b и m -- какие-то фиксиолванные константы. Грубо говоря, ничего случайного в этой последовательности нет, но распределение величин близко к равномерному.

Если нужны действительно случайные числа, их можно получить из девайса /dev/random, который коллекционирует шум от работы драйверов. Это -- как шар из корзины. Но в нем чисел не бесконечно много, поэтому иногда приходится ждать, пока из него можно прочитать.
На случай, если ждать нельзя, есть /dev/urandom, в котором чисел "столько, сколько надо", то есть, они не совсем случайные, а вычислены из слуяайных чисел по неким алгоритмам.
Спасибо сказали: