c++难题,高手救济~~~

来源:百度知道 编辑:UC知道 时间:2024/05/13 06:37:12
要求随机产生学生分数,60以下,60~70,70`80,80`90,90`100各段要5~10个左右,用rand函数每次产生的都一样的啊~~~
谁帮我搞定,再加!!
还有一问:怎么使分数都不一样呢?试了n次总有重复的,怎么办啊??

给你看个程序估计你就明白了,
#include<iostream>
#include<stdlib.h>
using namespace std;
int main()
{
int i;
for(i=0; i<10; i++)
cout<<rand() % 100<<" ";
cout<<endl<<endl;
srand(2);
for(i=0; i<10; i++)
cout<<rand() % 100<<" ";
cout<<endl<<endl;
srand(1);
for(i=0; i<10; i++)
cout<<rand() % 100<<" ";
cout<<endl;
return 0;
}
结果如下:
41 67 34 0 69 24 78 58 62 64
45 16 98 95 84 50 90 31 5 16
41 67 34 0 69 24 78 58 62 64

下面是解释:rand()函数的作用是返回0~32767之间的一个随即数.利用rand() %可以产生0~n-1范围内的一个随即整数;srand(unsigned)的作用是初始化随机数发生器.当参数不同时,接着由rand()函数所产生的随机数列也不同.若在rand()函数前没有执行过sand函数,则产生的是参数值为1的随机数序列.即相当于调用了一次srand(1)函数.
你把循环的次数也用随即数产生不就可以了吗??(能产生1-10的随即数,难道不可以产生5-10的吗?很容易的吧?)
用个循环判断一下,如果有重复的就只输出一次或者删除或者+1,再循环,这就是另一个算法了!(简化一下就是判断一组数中有没有相等的,如果有再做其他