Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
rubodon
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 19
#1

Чайник VS Случайные числа - C++

11.09.2012, 20:01. Просмотров 859. Ответов 12
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "stdafx.h"
#include <windows.h>
#include <iostream>
#include <ctime>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
#include <cstdlib>
 
using namespace std;
 
int main()
{
while(1==1){
 
    Sleep(2000);
    srand(time(NULL));
    int a = 100 ; int b = 1000 ; int c ;
    c = rand() % (b - a + 1) + a;
 
    cout << c;
}
}
Я хочу получать каждый раз случайное число в диапазоне от 100 до 1000. Но получаю примерно вот что:
100
112
124
135
...
869
881
...
1000
102
125
136
...

и так далее. Как сделать так, чтобы было например:

125
101
859
880
251
904
487
...
и тд и тп. Пожалуйста, помогите. Уже всю голову сломал.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.09.2012, 20:01
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Чайник VS Случайные числа (C++):

Нужно чтобы случайные числа вставали в конец массива,а не удаляли числа - C++
#include &lt;iostream&gt; using namespace std; void main() { setlocale(LC_ALL, &quot;Russian&quot;); int n; // кол-во элементов массива ...

Случайные числа - C++
void rndChain(){ system(&quot;cls&quot;); SetConsoleTitleA(&quot;dovjina zrost vibirki&quot;); ...

Случайные числа от -8 к 8 - C++
Как можно сделать рандомом числа от -8 к 8, нашел на форуме пример: int r=(rand() % 11) + 5;//от 0 до 10 и +5, то есть от 5 до 15 но...

случайные числа - C++
rand() в VS имеет диапазон от 0 до 32768? даже изменение RAND_MAX ничего не повысит верхний уровень?

случайные числа - C++
как заполнить массив случайными числами например от -50 до 50 void generate(int mas,int n){ for(int i=0;i&lt;n;i++) mas=(rand()%50)-50; ...

случайные числа - C++
Всем привет! нужна ваша помощь. мне нужно реализовать функцию, которая заполняет двумерный массив mat случайными числами. на сколько я...

12
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2012, 20:07 #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <random>
#include <iostream>
 
int main()
{
    std::random_device rd;
    std::mt19937 gen(rd());
    std::uniform_int_distribution<> dis(100, 1000);
    for(std::size_t i = 0; i < 10; ++i)
        std::cout << dis(gen) << std::endl;
    return 0;
}
2
rubodon
1 / 1 / 0
Регистрация: 10.09.2012
Сообщений: 19
11.09.2012, 20:20  [ТС] #3
soon, вроде бы работает как мне надо, спасибо. Если не трудно, прокомментируйте, пожалуйста, представленный Вами код.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2012, 20:38 #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
#include <random>
#include <iostream>
 
int main()
{
    std::random_device rd; // Класс, включающий в себя недетерминированную функцию(operator()), которая возвращает случайное число
    std::mt19937 gen(rd()); // Генератор "Вихрь Мерсена". Инициализируется случайным значением из random_device
    std::uniform_int_distribution<> dis(100, 1000); // Задаем границы для случайных чисел
    for(std::size_t i = 0; i < 10; ++i)
        std::cout << dis(gen) << std::endl; // Выводим
    return 0;
}
2
PSIAlt
87 / 87 / 8
Регистрация: 19.06.2012
Сообщений: 245
11.09.2012, 20:53 #5
Насчем с того что комп может генерить только ПСЕВДОслучайные числа. Использование комбинации srand+rand тем более от времени считается слабо случайным. К томуже, алгоритмы случайных числел основаны на сдвигах итд, и в конце концов они имеют период повторения.
Это большая трабла в индустрии вообще, особенно в шифровальных делах. Intel вкладывает бабос чтобы делать модуля в ЦПУ, которые умеют генерить тру-случайные числа используя флустрации температуры, ну и т.д. и т.п., короче если нужны _реально_ случайные числа то тут проблема.
0
NoMasters
Псевдослучайный
1764 / 1107 / 73
Регистрация: 13.09.2011
Сообщений: 3,143
11.09.2012, 21:00 #6
Цитата Сообщение от PSIAlt Посмотреть сообщение
Насчем с того что комп может генерить только ПСЕВДОслучайные числа.
Давайте тогда сразу перейдём к тому, что совершенно случайное число получить вообще невозможно, чего уж там. У вихря Мерсенна, который посоветовал soon, период составляет 2^19937-1, мало что ли?
0
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
11.09.2012, 21:06 #7
Цитата Сообщение от PSIAlt Посмотреть сообщение
Насчем с того что комп может генерить только ПСЕВДОслучайные числа. Использование комбинации srand+rand тем более от времени считается слабо случайным. К томуже, алгоритмы случайных числел основаны на сдвигах итд, и в конце концов они имеют период повторения.
Это большая трабла в индустрии вообще, особенно в шифровальных делах. Intel вкладывает бабос чтобы делать модуля в ЦПУ, которые умеют генерить тру-случайные числа используя флустрации температуры, ну и т.д. и т.п., короче если нужны _реально_ случайные числа то тут проблема.
Я точно не помню, но есть какой-то сайт, который генерирует ДЕЙСТВИТЕЛЬНО случайные числа на основе атмосферных шумов. В принципе, в каком-то серьёзном проекте с подключением к интернету вполне реально использовать API с этого сайта. Ещё раз повторю - подробности не помню, но тема мелькала на Хабре.
0
soon
2542 / 1307 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
11.09.2012, 21:14 #8
PreFX, random.org
Но я солидарен с NoMasters, и также считаю, что любое сгенерированное число можно предсказать. Вопрос лишь в том, какой объем информации необходимо для этого обработать.
0
Thinker
11.09.2012, 21:55
  #9

Не по теме:

есть такое направление в философии - детерминизм, который утверждает, что ничего случайного нет, все имеет причинно-следственную связь. Если так, то не существует случайных чисел. Так что это вопрос философский.

0
PreFX
25 / 20 / 1
Регистрация: 14.07.2012
Сообщений: 176
11.09.2012, 21:59 #10
soon, если бы наши компьютеры могли принимать множество специфических данных ( как то активность мозга, который ещё почти не изучен, или движение тех же квантов) и обрабатывать их, тогда мы могли бы предугадать всё, что угодно ( но куда уж нам). Однако до тех пор ( ещё лет эдак 3000) мы спокойно можем утверждать, что такие числа случайны.

Добавлено через 1 минуту
Хотя я сам уверен в том, что случайности не случайны (с)
0
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
11.09.2012, 22:49 #11
Цитата Сообщение от Thinker Посмотреть сообщение

Не по теме:

есть такое направление в философии - детерминизм, который утверждает, что ничего случайного нет, все имеет причинно-следственную связь. Если так, то не существует случайных чисел. Так что это вопрос философский.

Не по теме:

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

0
NoMasters
11.09.2012, 22:53
  #12

Не по теме:

Цитата Сообщение от ~OhMyGodSoLong~ Посмотреть сообщение
квантовая механика
Они фаталисты просто

0
Dani
11.09.2012, 23:50     Чайник VS Случайные числа
  #13

Не по теме:

Цитата Сообщение от Thinker Посмотреть сообщение
есть такое направление в философии - детерминизм, который утверждает, что ничего случайного нет, все имеет причинно-следственную связь. Если так, то не существует случайных чисел. Так что это вопрос философский.
1) эти числа - псевдослучайные;
2) я где-то когда-то читал, что случайные числа получаются, то-ли из траектории движения фотонов, то-ли из еще чего-то, связанного с фотонами.

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
11.09.2012, 23:50
Привет! Вот еще темы с ответами:

случайные числа в с++ - C++
День добрый . Задание : игра в кубики с компом . Не могу понять как сделать для компа и человека действительно разные числа . Делал через...

Случайные числа - C++
Всем доброго времени суток, я чёт туплю, подскажите, как посчитать сколько чисел сгенерированных случайным образом в диапазоне попадают в...

Случайные числа - C++
Создать матрицу случайных чисел, если max элемент располагается левее минимального то тогда сложить элементы левой половинки матрицы.

случайные числа - C++
подскажите как сформировать двумерный массив случайных чисел в заданном диапозоне которые не повторяются


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
11.09.2012, 23:50
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru