Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74

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

17.10.2013, 16:30. Показов 3464. Ответов 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
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
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 #include &lt;iostream&gt; using...

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

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

Добавлено через 46 секунд
Цитата Сообщение от Corax111 Посмотреть сообщение
но вот что меня смутило, каждый раз числа создаются либо +7 от предыдущего, либо +3, либо +10...
Параноя
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.10.2013, 17:20  [ТС]
Цитата Сообщение от Avazart Посмотреть сообщение
Параноя
Почему это?
Ну, в PHP я не проверял, по возрастанию они появляются или нет, точнее не задумывался над этим.
И да, это не параноя, а так оно и есть, потому что я раз 20 перезапускал программу и так оно и выходит...
Ладно спрошу так, зачем в rand() скобки? В них же что-то можно написать?
0
54 / 54 / 37
Регистрация: 05.09.2013
Сообщений: 1,864
17.10.2013, 17:26
Цитата Сообщение от Corax111 Посмотреть сообщение
Ладно спрошу так, зачем в rand() скобки? В них же что-то можно написать?
Почитайте про функции.
Цитата Сообщение от Corax111 Посмотреть сообщение
И числа без всякой зависимости от чего-либо генерируются
Программно такое невозможно.
Для ваших нужд rand() полностью подойдёт.
0
5499 / 4894 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
17.10.2013, 17:38
Corax111, если работа кода не устраивает, то усложните его. Создайте массив с рандомными значениями (там уже будет не только по возрастанию), рандомно выберите из него число.
1
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.10.2013, 17:46
Цитата Сообщение от 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  [ТС]
MrGluck, по правде говоря я Вас не понял))
alsav22, спасибо за совет)
0
Форумчанин
Эксперт CЭксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.10.2013, 17:55
Цитата Сообщение от Corax111 Посмотреть сообщение
MrGluck, по правде говоря я Вас не понял))
что именно?
ГСЧ - генератор случайных чисел,
ПГСЧ - псевдо-генератор случайных чисел
Вихрь Мерсенна
генератор недетерменированных СЧ
Одна из разновидностей генератора на основе Вихря Мерсенна

Добавлено через 1 минуту
С++11 - стандарт языка С++
boost/random - библиотека, содержащая набор класов и функций для работы со СЧ. С++11 взял основные генераторы оттуда, ничего из других мест.
2
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
17.10.2013, 18:15
Цитата Сообщение от 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  [ТС]
Благодарю еще раз всех ответивших, но, ответьте пожалуйста еще на один вопрос...
Есть некоторый массив, с тремя значениями. В случайном порядке я пытаюсь вызвать элементы массива, на что компилятор не ругается, но очень очень очень сильно ругается консоль...

Выдает кучу символов всяких разных, переодически поле со знаками вопросами, а потом опять какая-то кодировка, сопровождающаяся пиканием. В чем же ошибка?
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
Модератор
Эксперт по электронике
8978 / 6744 / 921
Регистрация: 14.02.2011
Сообщений: 23,852
17.10.2013, 20:41
Цитата Сообщение от 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  [ТС]
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Эксперт С++
 Аватар для MrGluck
8216 / 5047 / 1437
Регистрация: 29.11.2010
Сообщений: 13,453
17.10.2013, 21:06
Цитата Сообщение от Corax111 Посмотреть сообщение
А вот, еще один вопросик возник, а можно ли делать массив переменных, если да, то как?) Ну, что-то вроде
А что-то мешает взять и проверить?
Да, можно
0
0 / 0 / 0
Регистрация: 16.06.2013
Сообщений: 74
17.10.2013, 21:30  [ТС]
MrGluck, вы правы, ничего не мешает, но мало-ли, текст же вводится в кавычках, а числа нет, может переменные еще как-то) Просто проще спросить, чем 10 раз пробовать разными способами))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.10.2013, 21:30
Помогаю со студенческими работами здесь

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

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

Случайные числа от -10 до 10
сижу я значит и не могу вывести случайные числа от -10 до 10! Получается только от -50 до 50, for(int j= 0; j&lt;8; j++) ...

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

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


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru