c++随机数怎样生成

来源:百度知道 编辑:UC知道 时间:2024/05/27 02:07:55
我做了一个才数字的程序,但是每次生成的随机数都是一样的。
int CGame1Dlg::random()
{
int n=::rand();
return (abs(n)-abs(n)/10*10);
}

void CGame1Dlg::Generator(int *nGuessNum)
{
nGuessNum[0]=random();
while((nGuessNum[1]=random())==nGuessNum[0]);
while(((nGuessNum[2]=random())==nGuessNum[0])
||(nGuessNum[2]==nGuessNum[1]));
while(((nGuessNum[3]=random())==nGuessNum[0])||
(nGuessNum[3]==nGuessNum[1])||(nGuessNum[3]==nGuessNum[2]));
}
怎样才能生成不同的随机数呢?
具体怎样用呢?我不知道函数的语法啊。
我用了这两个函数以后,每次生成随机数都非常慢,CPU占用达到了100%,这正常吗?

一.C++随机函数(VC program)
#include <stdio.h>
#include <iostream>
#include <time.h>
using namespace std;
#define MAX 100
int main(int argc, char* argv[])
{ srand( (unsigned)time( NULL ) );
   for (int i=0;i<10;i++)
   cout<<rand()%MAX<<endl;
   return 0;
}
二、rand()的用法
int N = rand() % 11;
int N = 1 + rand() % 10;
  a + rand() % n

其中的a是起始值,n是整数的范围。

主要是rand每次取的随机种子都是一样的!!!
利用srand((unsigned)time(NULL)) 可以将系统时间当作随机种子
因为他取的是系统时间 而时间又是在不断变化的!!!
固在调用rand()便可以得到不同的随机数!

用法:

#include<stdio.h>
#include<stdlib.h>
#include<time.h>

void main()
{
int nI = 0;
int nJ = 100;//随机数的最大值
int nCont = 0;//控制随机数的个数

srand(time(NULL)); //取系统时间为随机种子

while(1)
{
nI = rand()%nJ; //取随机数
printf("%d\n",nI)