대학 숙제를 위해 시뮬레이터를 만들어야합니다. 이 시뮬레이터에는 3 대의 컴퓨터가 있으며, 그 중 2 대의 컴퓨터는 컴퓨터 1로 메시지를 보내고 컴퓨터 1은 메시지를 보내거나 거부합니다. 거부는 컴퓨터 2에서 20 %의 거부와 컴퓨터 3에서 50 %의 임의의 확률입니다. 나는 rand() % 100 + 1 함수를 srand (시간 (NULL)) 시드와 함께 사용합니다. 그것은 임의의 숫자를 만들지 만, 여러번 실행해야하고 동일한 난수가 사용될 때마다 실행해야합니다. 예를 들어 시뮬레이션을 12 번 실행하고 생성 된 수가 45 일 경우 45 번이 12 번 사용됩니다. 난 둘 다 난수 생성기를 코드 안에 배치하고 바깥에서 함수를 만들었다. 매번 난수를 생성하는 난수 생성기를 어떻게 만들 수 있습니까?C++은 매번 난수를 생성합니다.
#include <iostream>
#include <new>
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
using namespace std;
int randomgen()
{
int rndnum=0;
srand (time(NULL));
rndnum=rand()%100+1;
cout<< rndnum<<endl;
return rndnum;
}
struct comp1
{
int rejected=0;
int received=0;
int sent=0;
int onhold=0;
bool comp2reception()
{
received++;
bool result=false;
int rndnum=0;
srand (time(NULL));
rndnum=rand()%100+1;
if(rndnum<=20)
{
rejected++;
result=false;
}
if(rndnum>=21)
{
onhold++;
result=true;
}
return result;
}
bool comp3reception()
{
received++;
bool result=false;
int rndnum=randomgen;
if(rndnum<=50)
{
rejected++;
result=false;
}
if(rndnum>=51)
{
onhold++;
result=true;
}
return result;
}
};
'srand'를 두 번 이상 사용하지 않아도됩니다. 실제로, 당신은 그것을 전혀 사용하지 않아야합니다. [이 예] (http://en.cppreference.com/w/cpp/numeric/random)를보십시오. – nwp
당신은 srand를 주 함수에 한 번 넣어야합니다. 다른 곳이 아닙니다. – Meccano
임의의 숫자를 물어볼 때마다 동일한 시드 값을 사용하여'srand'를 호출하면 동일한 수를 얻게됩니다. 'srand' 호출을'main' 함수의 맨 위로 이동하십시오.이 함수는 프로그램이 시작될 때 한 번만 호출됩니다. –