випадкові числа в C

  • Thread starter ehsanelahimirza
  • Start date
E

ehsanelahimirza

Guest
Привіт усім

PLZ скажіть як згенерувати випадкове число в order.in заданому діапазоні.

PLZ надати код і бібліотеки,
Як писати на C (синтаксис)

спасибо

 
Спробуйте це

Цитата:# Включити <cstdlib>

# Включити <cstdio>Основними Int (void) (

Int Lim = 100;

fprintf (STDOUT, "% D% D% D \ N", Random () / ((непідписаних INT) RAND_MAX / LIM), випадкове () / ((непідписаних INT) RAND_MAX / LIM), випадкове () / ( (непідписаних INT) RAND_MAX / LIM));

повернути 0;

)

 
Hows це?

Код:# Включити <iostream>

# Включити <ctime>

# Включити <cstdlib>використання імен STD;Int generate_random_number (INT uLowest, Int uHighest, BOOL bSeed)

(

/ / Семенов випадкове число генерується при requried.

якщо (TRUE == bSeed)

(

згапй ((непідписаних) Час (0));

)/ / Створення діапазону значень, між якими числа будуть згенерували.

Int nRange = (uHighest-uLowest) 1;/ / Згенерувати випадкове число.

Int nRandomInteger = uLowest INT (nRange * RAND () / (RAND_MAX 1,0));повернення nRandomInteger;

)п ()

(

Суд <<generate_random_number (1, 1000, True) <<епсІ;

Суд <<generate_random_number (1, 1000, помилково) <<епсІ;

Суд <<generate_random_number (1, 1000, помилково) <<епсІ;

Суд <<generate_random_number (1, 1000, помилково) <<епсІ;повернути 0;)
 
Полюс пише:

Hows це?Код:# Включити <iostream>

# Включити <ctime>

# Включити <cstdlib>
 
Функція Random () завжди повертає ціле число від 0 до RAND_MAX.Так що я зробив це "розділяй генерований номер за RAND_MAX а потім помножити з необхідною 'Значення Lim.Таким чином, кількість не буде більшим, ніж 'Lim.Те діапазон буде дорівнює 0 <= R <= Lim.

Якщо ви хочете задати діапазон як lim1 <= R <= lim2 потім додати цілу низку lim1 з ним.Але тоді має бути множення на (lim2 - lim1).тобто: "lim1 (lim2 - lim1) * випадкова () / RAND_MAX; '

Що Полюс зробили свого роду рандомізації випадкові числа.Він буде генерувати більш рандомізоване номерів з використанням міток як випадкова насіння.

 
Ось що я використовую для генерації випадкових кілок у межах цього діапазону

Код:# Включити <iostream>

# Включити <ctime>

використання імен STD;п () (Int rannum / / визначення змінних

BOOL знайдено = 1;

довгий сек;часу (& сек); / / використовуємо функцію часу, щоб отримати кількість секунд від 1/1/1970згапй ((непідписаних) сек) / / з цим номером для насіннєвих згапй () функціїWhile (знайдено == 1) (/ / використання циклі шукати потрібний номер

rannum = RAND ();

якщо (rannum> = 0 & & rannum <= 15) (/ / відключення циклу, коли знайдений номер

Знайдено = 0;)

)

Суд <<rannum / / відобразити число

деЬ ();

)

 
Існують дві проблеми, з цим Кодексом.
1) його не сильно відрізняється від того, що вже Полюс Написав.
2) створення цьому циклі є вельми неефективні.Оскільки Thats ООН необхідно.Масштабування випадкові числа на RAND_MAX набагато краще, ніж ця.Все це робить, витрачати багато часу в цьому циклі.

Ще краще було додати ще один рівень рандомізації.Може бути, ми можемо насіння 'Random', з плином часу.Потім отримаєте випадкове число, а потім насіння його знову з цим номером.Потім знову отримати випадкове число.

[цитата = "Lucifre"] Ось що я використовую для генерації випадкових кілок у межах цього діапазону

Код:# Включити <iostream>

# Включити <ctime>

використання імен STD;п () (Int rannum / / визначення змінних

BOOL знайдено = 1;

довгий сек;часу (& сек); / / використовуємо функцію часу, щоб отримати кількість секунд від 1/1/1970згапй ((непідписаних) сек) / / з цим номером для насіннєвих згапй () функціїWhile (знайдено == 1) (/ / використання циклі шукати потрібний номер

rannum = RAND ();

якщо (rannum> = 0 & & rannum <= 15) (/ / відключення циклу, коли знайдений номер

Знайдено = 0;)

)

Суд <<rannum / / відобразити число

деЬ ();

)

 
Привіт, для всіх тих хлопця, які потребують генератор випадкових: Не використовуйте C / C генератора випадкових функцій.Що б ви робити з насінням (ЧАС / клавіш) її не так, але випадкова псевдовипадкових як вони це називають.Якщо у вас є велика кількість випадкових чисел від генератора можна розрахувати наступним і все, що буде стежити !!!..Якщо вам потрібен дійсне джерело випадкових Go To Google "і знайти" CPRNG "= криптографічного ПГСЧ

 
Так, ви майже праві.Більшість генераторів випадкових чисел повторити їхній потік з якийсь період.Але ми завжди можемо включати більш випадковості в цю звичайний потік випадково визначенні місця обрана форма якого випадковим числом.Також characterstic генераторів випадкових чисел специфічний для кожного комп'ютера.Таким чином, в більшості умов вона звичку робити будь-яких проблем, оскільки його унікальним.

 
Привіт, Ви неправильно!.З генератором випадкових чисел є простим ПГСЧ і є однаковим для всіх комп'ютерів, код у складена на.Я знаю, як я перевірити її на проекті!.Її не безпечною в коей мере!.

Павла.

 
Не зовсім так.Тому що не всі системи реалізації генератора випадкових чисел у тому ж шляху.Є системи, апаратні генератори випадкових чисел.Крім того, більшість з псевдовипадкових послідовностей повторів з певним періодом.Хіба ви не бачили цих псевдо-апаратні генератори випадкових послідовностей?.Я думаю, у своїх комп'ютерах також стосується.Може бути Thats Atleast відноситься і до старих реалізацій комп'ютера.Тому що я бачив книги торкаючись цієї проблеми повторюваність і унікальність конкретного комп'ютера.

PaulHolland пише:

Привіт, Ви неправильно!.
З генератором випадкових чисел є простим ПГСЧ і є однаковим для всіх комп'ютерів, код у складена на.
Я знаю, як я перевірити її на проекті!.
Її не безпечною в коей мере!.Павла.
 
Що Ви говорите, називається нормальним способом отримання ПГСЧ це робиться на апаратному рівні і так само в програмному забезпеченні.Без комп'ютера я бачив в останні 30 років мав генератора випадкових виконані.Єдине, що було зроблено за часів DOS в Borland C використовує лічильник не використовується як випадкова джерело!.Ось і все.Але я залишу його тут так ви, здається, знаю краще, ніж усі світи cryptgraphic експерти, включаючи мене, що працює на військових cryptogathic Сістемс вже більше 20 років

<img src="http://www.edaboard.com/images/smiles/icon_smile.gif" alt="Посмішка" border="0" />

.

Павла.

 
Здравствуйте Павло,
Я не є фахівцем ні в криптографії, ні про випадкових чисел.Але є вагомі підстави вважати, що існує апаратний генератор випадкових в машинах, крім тих військових комп'ютерах класу.

Погляньте на вихідний код ядра Linux.За характером драйверів розділі є можливість включити апаратні генератори випадкових чисел в i8xx Intel і AMD 76 разів материнських платах на базі.Також є підтримка для процесорів VIA Нехемія апаратний генератор випадкових чисел.

 
Якщо ви запитаєте мене, згапй () і RAND () з часом насіння досить випадковими.

 
Привіт,
Для цього питання, Стів Саміт завершився докладне обговорення переваг та недоліків звичайних mechanis випадкових чисел.

Ви можете здійснювати пошук в PDF-файл з ім'ям "C Питання та відповіді" з Google!Удачі,

Thomson

 
Якщо ви робите велику програмування сигналу з випадковим шумом то згапй Rand і не повинні використовуватися.
Якщо ви хочете швидко випадкове число між 0 та 1000 як приклад то Ранд і згапй буде працювати нормально.

 
Я не згоден, що ГВЧ всередині чіпів реальних випадкових чисел.Використовувана технологія, дійсно, деякі регістри зсуву та лічильники, і не має принципову відмінність від псевдо-випадкового числа генеруються програмним забезпеченням.

Є істинно генеруються випадкових чисел, який не потребує насіння, які засновані на деяких броунівський природи квантової механіки і деякі екзотичні явища, які створюють деякі "білий шум", який може бути посилений і розраховує на і подані у вигляді числа в межах.

Для більшості додатків, ігрові автомати, шифрування і подобається, це більш реалістичний мати псевдо випадкові числа і мати належний захист насіння і генерація схеми.Охорона таким чином, що не існує способу Sneak Peek в змінну і генерації в такій організації, яка не використовує час дня чи повторюються circunstance повинен бути створений.

Я люблю схеми, де Вам відслідковувати позиції миші на деякий час і є деякі моменти, захоплених або значення введених символів на клавіатурі.Те, що дійсно має броунівський характер і не легко відтворюються.

 

Welcome to EDABoard.com

Sponsor

Back
Top