Перейти к содержанию
Посмотреть в приложении

A better way to browse. Learn more.

Форум Академгородка, Новосибирск

A full-screen app on your home screen with push notifications, badges and more.

Чтобы установить это приложение на iOS и iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
Чтобы установить это приложение на Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано
Не могу найти как на С++ получить любое случайное число от 0 до 1. Кто-нибудь может помочь это сделать?

Рекомендуемые сообщения

Опубликовано

#include <cstdlib>

#include <iostream>

 

using namespace std;

 

int main()

{

int random_integer = rand();

cout << random_integer << endl;

}

 

 

Опубликовано
  • Автор

Интересуют не целые числа, а множество случайных чисел от 0 до 1 (0,000123, 0,971620 и т.д.). Необходимо построить случайное направление вектора в пространстве.

PS: то что указали Вы, у меня лично постоянно выдает 42.

Обращаюсь за помощью тк я не программист.

Изменено пользователем Гость

Опубликовано
  • Автор

Может я совсем запутался в жизни, но у меня rand() выдает 42, а это немного больше чем 1.

Смотрю книжку: rand() - случайное целое число от 0 до RAND_MAX (~32000)

 

Самое обидное, что уже встречал это и не сохранил по запарке. Там что-то делить на что-то надо, а потом на что-то умножать.

Изменено пользователем Гость

Опубликовано
  • Автор

Спасибо, все работает.

 

Правда еще малюсенькая проблемка.

srand (time(0));

или

srand((unsigned)time(0));

все равно выдается поток чисел очень близких по значению. Как сделать чтобы разброс был разнообразным?

 

Опубликовано

есть свой резон в том что реально хорошие генераторы псевдослучайных чисел - платные, знаете ли..

 

а встроенные вот такие - как правило барахло..

Опубликовано

QUOTE (4you @ Apr 5 2007, 00:22)
PS: то что указали Вы, у меня лично постоянно выдает 42.

Это же ответ на основной вопрос! О жизни, Вселенной, и вообще...https://academ.club/html/emoticons/smile.gif

Опубликовано
Хочешь хороший генератор псевдослучайных чисел - читай Д. Кнут "Искусство программирования на ЭВМ" том 2. =)
Опубликовано
  • Автор
Полистал книжку. Неужели все так безнадежно и никакими простыми методами нельзя сделать чтобы каждое последующее число было действительно случайным (так чтобы хотя бы глаз не сомневался). Помогите биологу, подскажите способ, должно же быть простое решение.
Опубликовано

Как вариант псевдослучаных чисел

double RangedRand( int range_min, int range_max)
{
    return (double)rand() / (RAND_MAX + 1) * (range_max - range_min)+ range_min;
}

 

только перед вызовом желательно:

srand( (unsigned)time( NULL ) );

 

QUOTE

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

 

Я как то видел в инете, USB платку для этих целей. Я точно не знаю как в Винде, но в Linux есть файл куда складываются числа полученные в результате случайных действий (как, то интервал нажатия между клавиш, шелконье мышкой и т.д). А уже из него выбирается число, но правда если лимит исчерпан, то работает генератор псевдослучайных чисел.

Изменено пользователем Гость

Опубликовано

QUOTE (SergeiR @ Apr 5 2007, 06:06)
есть свой резон в том что реально хорошие генераторы псевдослучайных чисел - платные, знаете ли..

а встроенные вот такие - как правило барахло..

не все так плохо ;) ведь есть Boost Random Number Library

Опубликовано
  • Автор

Обращаюсь с очередным вопросом за помощью к программистам.

Программа со всеми вычислениями написана под dos в prog.cpp. Создано диалоговое окно с огромным количеством полей edit для введения параметров и buttons для вывода результатов вычислений, все привязано к своим переменным.

Вопрос: как правильно связать переменные в программе prog.cpp с теми что созданы для диалога (Visual C++ 6).

Опубликовано

QUOTE (4you @ Apr 6 2007, 11:22)
Обращаюсь с очередным вопросом за помощью к программистам.
Программа со всеми вычислениями написана под dos в prog.cpp. Создано диалоговое окно с огромным количеством полей edit для введения параметров и buttons для вывода результатов вычислений, все привязано к своим переменным.
Вопрос: как правильно связать переменные в программе prog.cpp с теми что созданы для диалога (Visual C++ 6).

Ну так и перекомпиляйте как консольное приложение.

А так считай заново проект переписывать.

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

Аккаунт

Навигация

Поиск

Поиск

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.