Форум программистов, компьютерный форум, киберфорум
HACKER KAY
Войти
Регистрация
Восстановить пароль
Рейтинг: 5.00. Голосов: 2.

Случайное число в C++

Запись от HACKER KAY размещена 09.09.2021 в 17:25

Публикую код простенького генератора случайных чисел на C++. Сид генерируется из времени и умножается на постоянно меняющееся число (если получаем его циклом, например) и делится на 2.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
#include <fstream>
 
using namespace std;
 
int random_tick; // для выдачи разных результатов, не зависим от времени
 
int main()
{
    int min = 1;   // Минимум
    int max = 100; // Максимум
    random_tick++;
    srand(time(0) * random_tick / 2); // генерируем случайный сид
    cout << "Random integer: " << min + rand() % max << endl;
    return 0;
}
Размещено в Без категории
Показов 1158 Комментарии 9
Всего комментариев 9
Комментарии
  1. Старый комментарий
    Аватар для Алексей1153
    Цитата:
    int random_tick;
    Цитата:
    random_tick++;
    Цитата:
    * random_tick / 2
    неопределённое поведение программы
    Запись от Алексей1153 размещена 10.09.2021 в 08:13 Алексей1153 на форуме
  2. Старый комментарий
    Цитата:
    Сообщение от Алексей1153 Просмотреть комментарий
    неопределённое поведение программы
    Цитата:
    If constant initialization is not performed, a variable with static storage duration ([basic.stc.static]) or thread storage duration ([basic.stc.thread]) is zero-initialized ([dcl.init]).
    [basic.start.static]
    Запись от 0x10 размещена 10.09.2021 в 15:13 0x10 на форуме
  3. Старый комментарий
    Аватар для Алексей1153
    хорошо, будет всегда одно значение - ноль. Немного лучше
    Запись от Алексей1153 размещена 10.09.2021 в 15:23 Алексей1153 на форуме
  4. Старый комментарий
    Аватар для Avazart
    Ну а когда не ноль, то легко подбираемое все же 1..100 небольшой диапазон.
    Запись от Avazart размещена 10.09.2021 в 16:43 Avazart на форуме
  5. Старый комментарий
    А карта есть?
    Карту можно показать того, как он работает? Ну или диграмму на 100 столбцов и допустим 1000000 циклов.
    . Что-то типа этого можно?
    А то как-то вообще не информативно.
    или карту 100 на 100, с изменением цвета на протяжении работы от синего в начале к красному в конце, и желательно чтобы это была карта высот.
    По картам можно сравнивать алгоритмы по эффективности.
    Запись от Hretgir размещена 10.09.2021 в 23:08 Hretgir на форуме
    Обновил(-а) Hretgir 11.09.2021 в 07:36
  6. Старый комментарий
    Цитата:
    Сообщение от Hretgir Просмотреть комментарий
    Карту можно показать того, как он работает?
    По идее карта будет с кучей повторов т.к. рандом не случайное число а псевдослучайное, сид задает только фазу заданной последовательности. Это очень удобно и часто нужно в прогах. Даже сделав генерацию сида перед каждым вызовом рандома сделает ее не очень красивой по равновероятности выпадения чисел. Обычно сид это вроде текущее время в число + рандом. Для игр хватает.

    Настоящий рандом это по идее спец библиотека с таким наверно научным названием алгоритма из нескольких фамилий ученых.
    Запись от Excalibur921 размещена 11.09.2021 в 14:12 Excalibur921 вне форума
  7. Старый комментарий
    Цитата:
    Сообщение от Excalibur921 Просмотреть комментарий
    Настоящий рандом это по идее спец библиотека с таким наверно научным названием алгоритма из нескольких фамилий ученых.
    да, я знаю что рандом это очень не просто.
    знаю про повторы. поэтому и написал про карту.
    в детстве кодил всякие программки с рандомом, но то рандом бэйсика был.
    когда пробовал асм рандом был не нужен.
    да и во вселенной тоже рандома нет, есть закономерные события и только.
    Запись от Hretgir размещена 11.09.2021 в 19:15 Hretgir на форуме
  8. Старый комментарий
    Аватар для Royal_X
    Лучше использовать распределения случайных чисел из https://en.cppreference.com/w/cpp/header/random.
    rand() и srand() это несерьёзно.
    Запись от Royal_X размещена 11.09.2021 в 21:23 Royal_X на форуме
  9. Старый комментарий
    Аватар для XLAT
    Цитата:
    Сообщение от HACKER KAY
    генератора случайных чисел
    ещё никто такой не написал,
    потому, что это принципиально нельзя сделать.
    Запись от XLAT размещена 12.09.2021 в 09:32 XLAT вне форума
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.