2 / 2 / 1
Регистрация: 04.12.2008
Сообщений: 34
1

rand

05.12.2008, 15:15. Показов 17146. Ответов 8
Метки нет (Все метки)

как написать функцию с rand чтобы при каждом вызове этой функции рандомизация проходила заново...тоесть:
Код
int rcard;
int RandNumb()
{
	 rcard=1+srand() % 13;

	return rcard;
}
чтобы при каждом вызове функции было другое число но при такихже границах
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.12.2008, 15:15
Ответы с готовыми решениями:

Какое распределние у rand и rand_s???
Кто нить знает какое распределение у случайных чисел генерируемых с помощью rand или rand_s???...

srand() и rand() не работают должным образов
Всем привет! В общем задали задание написать программу заполнения двумерного массива случайными...

Как исключить определенные числа из диапазона для функции rand()
Использую функцию rand для получения случайных значений в диапазоне от 1 до 52 int...

Функция rand
Решить задачу с использованием библиотечной функции rand,заголовочный файл stdlib.h Случайные...

8
617 / 22 / 0
Регистрация: 30.09.2007
Сообщений: 357
05.12.2008, 17:41 2
Код
//Randomize.cpp : Defines the entry point for the application.
//

#include "stdafx.h"
#include <STDLIB.H>

int Randomize(int nMax, bool range);

int APIENTRY WinMain(HINSTANCE hInstance,
                     HINSTANCE hPrevInstance,
                     LPSTR     lpCmdLine,
                     int       nCmdShow)
{
    // TODO: Place code here.
    char szText[MAX_PATH];

    wsprintf(szText,"%d",Randomize(16,TRUE));
    MessageBox(NULL,szText,"Randomize",MB_OK);

    return 0;
}

int Randomize(int nMax, bool range)
{
    srand(GetTickCount()); int random_integer = (rand()%nMax);
    if(range){random_integer++; return random_integer;}

    return random_integer;
}
1
2 / 2 / 1
Регистрация: 04.12.2008
Сообщений: 34
05.12.2008, 17:44  [ТС] 3
ухты ёпт)а проще никак нельзя?)
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
05.12.2008, 18:49 4
srand(time(0)); вызови в main() незабуть подключить библиотеку <time.h>
int rcard;
int RandNumb()
{
rcard=1+rand() % 13;

return rcard;
}
2
2 / 2 / 1
Регистрация: 04.12.2008
Сообщений: 34
05.12.2008, 19:42  [ТС] 5
тоесть srand(time(0)); в самом main() прописывать а функцию уже де хочу там и прописываю?спс ща проверю

Добавлено через 15 минут 20 секунд
оо пасиб огромное все работает норм

Добавлено через 34 минуты 11 секунд
Хм...чет я не подумал о след момент мне нада вызвать эту функцию 2 раза в начале и результат первой и результат второй над чтобы потом додался... эт можно зделать?
Кароче должно быть так запустил программу выдало 2 рандомных числа от 1 до 13 и сразу их сумму потом при вводе '1' надо чтобы опять рандомнулось еще одно число и опять додалось к сумме первого и второго числа.
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
05.12.2008, 23:28 6
м зделаи опять же в main() цыкл на прибовление возрощаемого значение или отдельную функцию.
типа
Код
void main(){
int sum=0;
for(int i=0;i<(ввести кол-во раз прибовлять к результату);i++) {
sum+=RandNumb();
}
cout<<sum<<'\n';
}
}
0
2 / 2 / 1
Регистрация: 04.12.2008
Сообщений: 34
06.12.2008, 00:01  [ТС] 7
ну об этом я конечноже думал в первую очередь но srand(time(0)); вроде каждый раз при вызове функции RandNumb даёт ей новое значение и поэтому когда выводятся 2 рэнд функции они имеют одно значение а когда эти функции додаются они опять рандомизуются и меняют своё значение
Код
unsigned short int rcard;
unsigned short int RandNumb()
{
	 rcard=1+rand() % 13;

	return rcard;
}
int main()
{
	
srand(time(0));
	int RandNumbSumU;
cout<<"Your Have:"<<setw(33)<<"Sum:\n";
cout<<RandNumb()<<" and ";////////////////////////1
cout<<RandNumb()<<setw(36);///////////////////////2
	RandNumbSumU=RandNumb()+RandNumb();
	cout<<RandNumbSumU;////////////////////////////сума 1,2
Добавлено через 5 минут 34 секунды
поєтому приходится отключать srand(time(0)); и создавать кучу одинаковых функций только с разными названиями типа
Код
unsigned short int RandNumb1()
{
	 rcard=1+rand() % 13;

	return rcard;
}
unsigned short int RandNumb2()
{
	 rcard=1+rand() % 13;

	return rcard;
}
готовая же программа должна работать так
Код
#include "stdafx.h"
#include "iostream.h"
#include "iomanip.h"
#include "stdlib.h"
#include "time.h"
unsigned short int rcard;
unsigned short int RandNumb1()
{
	 rcard=1+rand() % 13;

	return rcard;
}
unsigned short int RandNumb2()
{
	 rcard=1+rand() % 13;

	return rcard;
}
unsigned short int RandNumb3()
{
	 rcard=1+rand() % 13;

	return rcard;
}

int main()
{
	
//srand(time(0));//ОТКЛЮЧАЕМ
	int RandNumbSumU;
cout<<"Your Have:"<<setw(33)<<"Sum:\n";
cout<<RandNumb1()<<" and ";////////////////////////1
cout<<RandNumb2()<<setw(36);///////////////////////2
	RandNumbSumU=RandNumb1()+RandNumb2();
	cout<<RandNumbSumU;////////////////////////////сума 1,2
cout<<"\n                 Hit - 1 Stand - 2\n";////
int press;
loop1:cin>>press;
if (press==1)
{
cout<<RandNumb1()<<" and "<<RandNumb2()<<" and "<<RandNumb3();//3
RandNumbSumU+=RandNumb3();
cout<<setw(30)<<RandNumbSumU<<"\n";//////////////////////сумма 1,2,3
return 0;
}
if (press==2)
{
	cout<<"You standed and you have "<<RandNumbSumU<<"\n";
	return 0;
}
else 
goto loop1;

	return 0;
}
как видите это тупо создавать столько одинаковых функций а если мне в проге понадобится вызвать ёё больше 10 раз?)
0
Smart is the new Sexy
32 / 32 / 1
Регистрация: 29.12.2008
Сообщений: 109
03.01.2009, 17:01 8
C++
1
2
3
4
5
6
7
8
9
10
11
#include <iostream>
#include <time.h>
using namespace std;
 
void main()
{
    srand(time(NULL));
    int i;
    i=rand()%5+1;
    cout << i;
}
srand привязывает генератор к времени. БУдет каждый раз тебе новое число.
Здесь генератор случайных чисел от 1 до 6. ))
0
15 / 14 / 2
Регистрация: 02.09.2008
Сообщений: 168
03.01.2009, 17:41 9
srand всегда будет показывать разные значения
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.01.2009, 17:41
Помогаю со студенческими работами здесь

Зерно (seed) рандом функции rand/srand
Возможно ли узнать зерно (seed) функции rand/srand. И возможно ли задать свое собственное зерно?

rand от 1 до 16
Вопрос в том как в функции rand() на c++ задать диапазон чисел от 1 до 16

Rand()
metka: r1=rand()%2; r2=rand()%2; if(r1==a &amp;&amp; r2==b)goto metka; else arr=='O'; ...

rand
srand(time(NULL)); int s = rand()%1000 +1; генерирует бред вроде 3,4,7,10,14,19,21,26,29... ...


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

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

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