генератор на..

27 отговора 10 прегледа
в отговор на случаен #21

генератор на..

Ако ти трябват истински случайни числа, то чисто софтуерните решения са неподходящи. По интернет някъде се мотае cryptography-FAQ. Ако искаш потърси там идеи. Доколкото си спомням един възможен начин е ако имаш звукова карта със възможност за дигитализиране на звук да изключиш всякакви устройства от входа на картата и да запишеш това което се чете от входа й. Получените данни са с ниска ентропия, така че трябва допълнително да ги компресираш с някакъв алгоритъм и резултата е поток от случайни данни. Все пак доколкото си спомням не всички карти са подходящи, така че ако смяташ да ползваш този метод най-добре си намери FAQ-а и го прочети.
Отговор
в отговор на МиГ-31 #22

възможни ли са случайните числа

Повторенията сами по себе си не са проблем. Проблемът когато се окаже че между елементите на "случайната" има някаква зависимост (както е в твоето предложение за използване на системния таймер) и ние сме в състояние чрез анализ на тези елементи горе-долу да открием каква е зависимоста. В интернет съществува цял клас атаки които ползват т.нар. "tcp sequence number prediction". Основния момент при тези атаки е анализът на едно поле от пакетите получавани от машината-жертва и откриването на някаква зависимост между стойностите на полето в отделните пакети. Стойностите в това поле би трябвало да са случайни но в действителност всички машини ползват различни методи за генериране на псевдослучайни числа. Едни от най-уязвимите машини са... Windows машините. За генериране на случайните числа те ползват... текущото време. Доста учудващо, а? Ти предлагаш да се ползват три различни функции, но и трите са функция на една променлива - текущото време, а дори и сто различни функции на една и съща променлива да ползваш няма да увеличиш "количеството случайност" в твоя генератор на случайни числа - същия ефект може и да се постигне чрез ползване на една достатъчно сложна функция.
Отговор
в отговор на случаен #23

генератор на..

или не сте ме разбрали правилно, или аз не съм обяснил добре има разлика между СЛУЧАЙНИ и ПСЕВДОСЛУЧАЙНИ числа и ако не я знаете можете да питате. Penguin почти уцели. наистина между генерираните числа трябва да има зависимост. всяко число зависи от предишното и е въпрос на това функцията която ги генерира да е достатъчно сложна. А именно и това ми трябва.
Отговор
в отговор на случаен #24

генератор на..

Добре де, що не пробваш с криптографска хеш-функция - RipeMD, SHA или нещо подобно, и после да правиш mod M. Така всички числа ще са функия на първоначалния seed, който подаваш на хеш-функцията
Отговор
в отговор на случаен #25

Генератор

При някои програмни езици използуването на функцията Random с определен параметър води до генерирането на една и съща поредица от случайни числа, но във вашия случай се изисква пълно изчерпване на диапазона без повторение. Предлагам ви да го разбиете диапазона на N интервала, да запишете междинните стойности в масив, да "разбъркате" масива и да го четете последователно. program Generator; const LO=...; {Долна граница на диапазона} HI=...; {Горна граница на диапазона} N=...; {Брой интервали в диапазона} var RAN: array [0..N] of real; {Псевдослучаен масив} TEMP,STEP: real; I,J: Longint; begin STEP:=(HI-LO)/N; for I:=0 to N do RAN[I]:=LO+I*STEP; {Генериране на числата} Randomize; for I:=N downto 1 do {"Разбъкване" на числата} begin J:=Trunc(Random(I)); TEMP:=RAN[J]; RAN[J]:=RAN[I]; RAN[I]:=TEMP end end. Изпълнението е просто, но иска памет и време при много големи N.
Отговор
в отговор на Azazel #26

генератор на..

това е идея ;) 10х
Отговор
в отговор на случаен #27

хмм

Tova e edin dobar nachin za generacia na psewdosluchaini chisla. V Knut moje da vidish na kakvi uslovia trjabva da orgovarjat a,c i M.
Отговор
в отговор на jordan #28

хмм

да но търся нещо друго. между впрочем мерси на всички които се обадиха ;)))
Отговор