0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
1

Случайные числа

17.10.2013, 16:30. Показов 2631. Ответов 15
Метки нет (Все метки)

C++
1
2
3
4
5
6
7
int main() 
{ 
srand(time(0));
int a = rand()%100;
cout << a << endl;
system("pause");
}
Есть вот такой способ задания случайных чисел от 0 до 100, но вот что меня смутило, каждый раз числа создаются либо +7 от предыдущего, либо +3, либо +10... И всегда по возрастанию, пока не дойдет до 100. А есть ли еще способы создания генератора, без использования времени?
В PHP вроде так
PHP
1
$a = rand(0,100);
И числа без всякой зависимости от чего-либо генерируются, можно ли что-то подобное сделать на C++?
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.10.2013, 16:30
Ответы с готовыми решениями:

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

Случайные числа. if, else
Подскажите, как мне сделать так. чтобы показывало рандомное число и выводило либо how, либо Today ...

Случайные числа
Привет, мне надо наполнить массив случайными числами но толька чтоб они не повторялись, подскажыте...

Случайные числа
как выполнить генератор случайных чисел генерировал любое число и присваивал число переменной

15
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 16:51 2
Цитата Сообщение от Corax111 Посмотреть сообщение
И числа без всякой зависимости от чего-либо генерируются
Такое разве возможно?
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.10.2013, 17:08  [ТС] 3
Цитата Сообщение от alsav22 Посмотреть сообщение
Такое разве возможно?
это я и хочу узнать, относительно PHP возможно) Я только что привел пример
0
Эксперт С++
8380 / 6141 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.10.2013, 17:14 4
Цитата Сообщение от Corax111 Посмотреть сообщение
это я и хочу узнать, относительно PHP возможно) Я только что привел пример
А вы что думаете что оно в php иначе работает ?

Добавлено через 46 секунд
Цитата Сообщение от Corax111 Посмотреть сообщение
но вот что меня смутило, каждый раз числа создаются либо +7 от предыдущего, либо +3, либо +10...
Параноя
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.10.2013, 17:20  [ТС] 5
Цитата Сообщение от Avazart Посмотреть сообщение
Параноя
Почему это?
Ну, в PHP я не проверял, по возрастанию они появляются или нет, точнее не задумывался над этим.
И да, это не параноя, а так оно и есть, потому что я раз 20 перезапускал программу и так оно и выходит...
Ладно спрошу так, зачем в rand() скобки? В них же что-то можно написать?
0
54 / 54 / 37
Регистрация: 05.09.2013
Сообщений: 1,864
17.10.2013, 17:26 6
Цитата Сообщение от Corax111 Посмотреть сообщение
Ладно спрошу так, зачем в rand() скобки? В них же что-то можно написать?
Почитайте про функции.
Цитата Сообщение от Corax111 Посмотреть сообщение
И числа без всякой зависимости от чего-либо генерируются
Программно такое невозможно.
Для ваших нужд rand() полностью подойдёт.
0
5488 / 4883 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 17:38 7
Corax111, если работа кода не устраивает, то усложните его. Создайте массив с рандомными значениями (там уже будет не только по возрастанию), рандомно выберите из него число.
1
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.10.2013, 17:46 8
Цитата Сообщение от alsav22 Посмотреть сообщение
Такое разве возможно?
std::random_device
В линуксе использует dev/random, туда выводятся шумы с устройств.

ТС, вам хватит ПГСЧ на основе Вихря Мерсенна, смотрите на std::mt19937
Но все это из С++11

Добавлено через 34 секунды
Если компилятор свежий поставить не вариант, то boost/random
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.10.2013, 17:49  [ТС] 9
MrGluck, по правде говоря я Вас не понял))
alsav22, спасибо за совет)
0
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.10.2013, 17:55 10
Цитата Сообщение от Corax111 Посмотреть сообщение
MrGluck, по правде говоря я Вас не понял))
что именно?
ГСЧ - генератор случайных чисел,
ПГСЧ - псевдо-генератор случайных чисел
Вихрь Мерсенна
генератор недетерменированных СЧ
Одна из разновидностей генератора на основе Вихря Мерсенна

Добавлено через 1 минуту
С++11 - стандарт языка С++
boost/random - библиотека, содержащая набор класов и функций для работы со СЧ. С++11 взял основные генераторы оттуда, ничего из других мест.
2
Модератор
Эксперт по электронике
8696 / 6494 / 879
Регистрация: 14.02.2011
Сообщений: 22,717
17.10.2013, 18:15 11
Цитата Сообщение от Corax111 Посмотреть сообщение
int a = rand()%100;
когда то давно поднималась эта тема и было доказано,что у остатка от деление плохое распределение
предлагалось сделать примерно так
C++
1
int a= (double)rand()/(double)MAX_INT*100;
подробности и доказательства не помню лет пятнадцать прошло
Цитата Сообщение от Corax111 Посмотреть сообщение
А есть ли еще способы создания генератора, без использования времени?
могу предложить такой вариант
C++
1
2
3
4
5
6
int a=0;
while(!kbhit())
  {
     a++;
   a%=100;
  }
функция kbhit возвращает 0 если клавиша на клавиатуре не нажата и 1 если нажата
т.е запускаешь программу цикл крутится a прибавляется
нажал на клавишу цикл прервался и в а практически случайное число потому что каждый раз будешь нажимать по разному
можешь это число передать srand для инициализации генератора и потом вызвать rand
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.10.2013, 20:24  [ТС] 12
Благодарю еще раз всех ответивших, но, ответьте пожалуйста еще на один вопрос...
Есть некоторый массив, с тремя значениями. В случайном порядке я пытаюсь вызвать элементы массива, на что компилятор не ругается, но очень очень очень сильно ругается консоль...

Выдает кучу символов всяких разных, переодически поле со знаками вопросами, а потом опять какая-то кодировка, сопровождающаяся пиканием. В чем же ошибка?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <stdlib.h> 
#include <ctime>
#include <string>
using namespace std;
 
 
int main() 
{ 
    setlocale(LC_ALL, "Russian");
    string a[3] = {"Tiger", "Bear", "Horse"};
    srand(time(0));
    cout << a[rand()%10] << endl;
    system("pause");
}
0
Модератор
Эксперт по электронике
8696 / 6494 / 879
Регистрация: 14.02.2011
Сообщений: 22,717
17.10.2013, 20:41 13
Цитата Сообщение от Corax111 Посмотреть сообщение
string a[3] = {"Tiger", "Bear", "Horse"}
размер массива 3
а ты обращаешься к 10
Цитата Сообщение от Corax111 Посмотреть сообщение
cout << a[rand()%10]
разумеется вылезаешь за границы массива
поправь
C++
1
cout << a[rand()%3] << endl;
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.10.2013, 21:04  [ТС] 14
C++
1
2
3
string animal[5] = {"Tiger", "Horse", "Bear", "Wolf", "Pantera"};
    cout << animal[rand()%10] << endl;
    system("pause");
Перефразировал массив, так сказать, и снова вопрос)) Да, знаю, слишком много вопросов, но лучше уж спросить у спецов, чем компасировать себе мозг и ни к чему не прийти)) Итак, выдает только horse, всех остальных выдавать не хочет)) Так и должно быть, или где-то косяк?)

Добавлено через 1 минуту
Все, спасибо) Исправил, все работает)) Не знал что так можно))

Добавлено через 11 минут
А вот, еще один вопросик возник, а можно ли делать массив переменных, если да, то как?) Ну, что-то вроде
C++
1
2
3
4
5
string h = "Horse";
string e = "Elephant";
string t = "Tiger";
string w = "wolf";
string animal[4] = {h, e, t, w}; //Как-то так? (Если возможно)
0
Форумчанин
Эксперт CЭксперт С++
8190 / 5040 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.10.2013, 21:06 15
Цитата Сообщение от Corax111 Посмотреть сообщение
А вот, еще один вопросик возник, а можно ли делать массив переменных, если да, то как?) Ну, что-то вроде
А что-то мешает взять и проверить?
Да, можно
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.10.2013, 21:30  [ТС] 16
MrGluck, вы правы, ничего не мешает, но мало-ли, текст же вводится в кавычках, а числа нет, может переменные еще как-то) Просто проще спросить, чем 10 раз пробовать разными способами))
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.10.2013, 21:30
Помогаю со студенческими работами здесь

Случайные числа
Всем привет! Мне нужно сгенерировать действительное случайное число в диапазоне от нуля до 1. Читал...

Случайные числа от -10 до 10
сижу я значит и не могу вывести случайные числа от -10 до 10! Получается только от -50 до 50, ...

Случайные числа
Доброго времени суток! Возможно ли сделать так, чтобы выпадали в случайном порядке числа 0, 2,...

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


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru