BG Development


  Reply to this topicStart new topicStart Poll

> random(); Проблем
avsrm
Публикувано на: 13-08-2023, 14:52
Quote Post



Име: Но
Група: Потребител
Ранг: Посетител

Мнения: 60
Регистриран на: 21.01.08



Много рядко съм ползвал тази функция ... и съм пропуснал нещо.
Не съм програмист и знам само тези две функции за генериране на случайни цифри (числа).
CODE

Int_1=rand()%10; // от 0 до 10
Int_1=random(10); // от 0 до 10


Проблема е че при всяко започване на генерирането на случайни числа,
ми генерира винаги една и съща поредица от цифри и съответно числа.
Има ли друг начин ...


--------------------
Знам само малко от Borland Builder C++ 6.
PMEmail PosterUsers Website
Top
WizardKing
Публикувано на: 13-08-2023, 15:23
Quote Post



Име:
Група: Потребител
Ранг: Активен

Мнения: 253
Регистриран на: 12.08.23



На какво си го написал това? Ако ти връща едни и същи числа то и остатъците по модул 10 ще са ти същите, но въпроса е на платформата/езика който ползваш дали се ползва една и съща инстанция на рандом генератор. Ако всеки път създава нова то числата ти почти винаги ще са същите защото поне едно време го вързваха за цикъл на процесора.


--------------------
Screw You Guys, I'm Going Home!
PMEmail Poster
Top
thrawn
Публикувано на: 13-08-2023, 15:26
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3521
Регистриран на: 17.01.17



Обикновено тия функции имат някакъв механизъм за инициализация на генераторът който ползват, което ще предотврати подобно дублиране. Но винаги трябва да имаш в предвид, че това са псевдо-случайни числа.
PMEmail Poster
Top
ici
Публикувано на: 13-08-2023, 15:40
Quote Post


Group Icon
Име: Ивайло Илчев
Група: VIP
Ранг: Почетен член

Мнения: 18249
Регистриран на: 06.06.04



Ако е на C, в началото на програмата
srand(time(NULL));


--------------------
Ние не сме в една лодка, ние сме в една буря. Лодките са различни.

Следващият път когато се почувстваш ненужен, грозен и недооценен, помни че освен това си и тъп.
PMEmail PosterUsers Website
Top
Delegate
Публикувано на: 13-08-2023, 16:08
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2500
Регистриран на: 30.05.09



Има още извращения
srand(time(NULL) ^ getpid());
и всякакви 'случайни' данни, всключително и инпут от юзера

За Unix има и още по-яки
CODE
unsigned int seed;
   FILE *f = fopen("/dev/urandom", "r");
   fread(&seed, sizeof(seed), 1, f);
   fclose(f);
   srand(seed);
PMEmail Poster
Top
avsrm
Публикувано на: 13-08-2023, 16:17
Quote Post



Име: Но
Група: Потребител
Ранг: Посетител

Мнения: 60
Регистриран на: 21.01.08



QUOTE
Ако е на C, в началото на програмата
srand(time(NULL));


icon_confused.gif icon_confused.gif icon_confused.gif
Заспа!!! Когато има кой да ти каже е ОК
Благодаря.

Пиша малко на Борланд ... знам много малко.


--------------------
Знам само малко от Borland Builder C++ 6.
PMEmail PosterUsers Website
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0