Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с рандомайзером / 13 сообщений из 13, страница 1 из 1
21.12.2015, 16:46
    #39133459
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
Дело в рандомайзере.
Написал простую функцию-рандомайзер:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
unsigned int Randomayzer()
{
time_t time_rand;
srand((unsigned long int) time(&time_rand));
...код...
return result_rand;
}



Если вставить эту функцию до int main, то функция каждый раз возвращает одно и то же значение.
В чём может быть дело?

Пытался вставить функцию внутрь int main, но возникает ошибка LNK1120 - какой-то неразрешённый символ.
...
Рейтинг: 0 / 0
21.12.2015, 17:01
    #39133485
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
ukugyul552465В чём может быть дело?
В том, что result_rand ничего нигде не присваивается.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.12.2015, 17:16
    #39133528
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
Присваивается.
В коде рандомайзера есть присвоение значения переменной result_rand.
...
Рейтинг: 0 / 0
21.12.2015, 17:24
    #39133545
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
Есть такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
#include <iostream>
#include <cstdlib>
#include <ctime>
using namespace std;
	int main()
{
	setlocale (0, "");
srand ( unsigned long long (time(NULL) ));
	unsigned long long n = 0;
	cout << "Введите кол-во значений для генерации рандомайзером";
	cin >> n;
	long double *RM = new long double[n];
	for (unsigned long long i = 0; i < n; i++)
	{
RM[i] = (rand() % 29637) * (rand() % 21589) / (rand() % 478);
	}
	for (unsigned long long i = 0; i < n; i++)
	{
	cout << RM[i] << endl;
	}
	cin.get();
	cin.get();
	return 0;
	}



При вводе значения n 10000, компилятор выдаёт ошибку: Integer devision by zero.
Где ошибка?
...
Рейтинг: 0 / 0
21.12.2015, 17:27
    #39133553
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
До 400 включительно - всё нормально, но 401 и дальше - ошибки.
...
Рейтинг: 0 / 0
21.12.2015, 17:32
    #39133562
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
ukugyul552465При вводе значения n 10000, компилятор выдаёт ошибку: Integer devision
by zero.
Где ошибка?
Сколько у тебя в коде операций деления?
Posted via ActualForum NNTP Server 1.5
Модератор: Отдредактировано. Просим быть более вежливыми.
...
Рейтинг: 0 / 0
21.12.2015, 17:38
    #39133571
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
Убрал деление, может быть, в нём ошибка, заменил на :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
#include <iostream>
#include <cstdlib>
#include <ctime>
#include <fstream>
using namespace std;
	int main()
{
	setlocale (0, "");
srand ( unsigned long long (time(NULL) ));
	unsigned long long n;
	cout << "Введите кол-во значений для генерации рандомайзером";
	cin >> n;
	long double *RM = new long double[n];
	for (unsigned long long i = 0; i < n; i++)
	{
RM[i] = (rand() % 29637) * (rand() % 21589) * (rand() % 3) * (rand() % 5);
ofstream Y;
	Y.open("RM.txt", ios::app);
	Y << RM[i] << endl;
	Y.close();
	}
	cout << "Done";
	cin.get();
	cin.get();
	return 0;
	}


Работает, но почему-то многовато значений, равных 0.
...
Рейтинг: 0 / 0
21.12.2015, 17:40
    #39133574
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
И ещё проблема: выводит значения в виде 1.09362e+009.
Как вывести значения в обычной форме?
...
Рейтинг: 0 / 0
21.12.2015, 18:00
    #39133613
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
ukugyul552465почему-то многовато значений, равных 0.
Я не помню: о том, что любое значение, умноженное на ноль, само становится нулём,
рассказывают в начальной школе или уже средней?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
21.12.2015, 18:10
    #39133632
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
старина Кнут вроде писал давным давно (во втором томе), что попытки сделать не приходя в сознание датчик псевдослучайных чисел как правило приводят к неудаче
...
Рейтинг: 0 / 0
22.12.2015, 13:16
    #39134440
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
ukugyul552465, а чем тебя не устраивает стандартная функция?
...
Рейтинг: 0 / 0
22.12.2015, 14:52
    #39134663
Зимаргл
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
ukugyul552465И ещё проблема: выводит значения в виде 1.09362e+009.
Как вывести значения в обычной форме?
http://www.cprogramming.com/tutorial/iomanip.html

DS, больше позитива к нубам. Терпимее надо быть к людям (с)
...
Рейтинг: 0 / 0
22.12.2015, 15:10
    #39134699
ukugyul552465
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Проблема с рандомайзером
Обычная функция не нравится - диапазон маловат, да и как-то не совсем гладко работает.
С нулями уже разобрался.
С выводом буду сейчас смотреть.
Всем спасибо.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Проблема с рандомайзером / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]