偷拍老妈照片百度知道:帮我看一下我的随机函数是怎么回事

来源:百度文库 编辑:高考问答 时间:2024/04/29 03:16:49
由于开始发错位置了(那个有赏分的),请打开下面网页:
http://zhidao.baidu.com/question/4275186.html#
原文是这样的:

我为了能用主函数调用随机函数,写了下面两种方法,反复实验后,都有点问题:

第一个:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int Random(int q,int r)//取[q,r]上的随机数
{
int i;
time_t t;
srand((unsigned) time(&t));
return rand()%(r-q+1)+q;
}

void main()
{
int i;
for(i=0;i<20;i++)
printf("%d ",Random(0,10));
}

//结果是不能随机,都是一个数

第二个:

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int Random(int q,int r)//取[q,r]上的随机数
{
return rand()%(r-q+1)+q;
}

void main()
{
int i;
for(i=0;i<20;i++)
printf("%d ",Random(0,10));
}

//这个虽说能随机了,但每次结果都一样

在这里我就想请各位高手帮忙指导一下,能不能写出真正的随机函数来?谢谢!

#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int Random(int q,int r)//取[q,r]上的随机数
{
return rand()%(r-q+1)+q;
}

void main()
{
time_t t;
srand((unsigned) time(&t));
int i;
for(i=0;i<20;i++)
printf("%d ",Random(0,10));
}

srand只能调用一次.

第一个,把srand((unsigned) time(&t));单独提出来,在取数之前初始化一次就行了。你在for循环中每次都需要设置初始种子,这样总是不能正常运行