// RandNum类,用于产生随机数。。。
class RandNum
{
public:
RandNum();
~RandNum();
private:
bool randKey; //在函数中控制time(0)执行的次数
public:
int getRandNum(); //生成随机数
};
/-----------------------------------------------------------------------------
RandNum实现段
------------------------------------------------------------------------------
/
RandNum::RandNum()
{
randKey = true; //将开关设置为打开 true
}
RandNum::~RandNum()
{
//不用做任何处理
}
int RandNum::getRandNum()
{
if( randKey ==true) //为了防止出现错误,所以产生随机种子的函数只能执行一次
{
randKey = false; //执行一次后将开关关闭
srand((unsigned)time(0)); //产生种子
}
return rand(); //调用rand()产生随机数返回
}
rand函数的用法有以下几种:
1、基本用法:在Excel中,直接在单元格输入=RAND(),就会得到大于等于0,小于1的随机数。
2、生成A与B之间的随机数字(A≤随机数<B):在第一个格子中输入=RAND()(B-A)+A。如,生成1到10之间的随机数字,输入:=RAND()9+1。其余数字,将鼠标置于该格子右下角,变为十字时,向下拖拉即可。
3、生成A与B之间的随机整数(A≤随机数<B):在第一个格子中输入:=INT(RAND()(B-A)+A)。如,生成1到10之间的随机整数,输入:=INT(RAND()9+1)。其余数字,将鼠标置于该格子右下角,变为十字时,向下拖拉即可。
4、生成A与B之间的随机数字(A≤随机数≤B):在第一个格子中输入:=RAND()(B-A+1)+A。如,生成1到100的随机数字,输入:=RAND()100+1。
但这个公式会出现大于B的数字,例如生成-12到12的随机数,例如公式=RAND()%(12+12+1)-12,当RAND生成为099的数值时,就会产生1275的数字。
5、生成A与B之间的随机整数(A≤随机数≤B)。在第一个格子中输入:=INT(RAND()(B-A+1)+A。如,生成1到100的随机整数,输入:= INT(RAND()100)+1其余数字,将鼠标置于该格子右下角,变为十字时,向下拖拉即可。
简单程序:输入一个数字1,2,3,4,产生对应位数的随机数#include
#include
"ctime"
using
namespace
std;
int
main()
{
int
num;
char
ch;
srand(
(unsigned)time(
null));
while(1)
{
cin>>ch;
switch(ch)
{
case
'1'
:num=rand()%10;break;
case
'2'
:num=rand()%100;break;
case
'3'
:num=rand()%1000;break;
case
'4'
:num=rand()%10000;
}
cout<
评论
0
0
加载更多一般情况下,随机函数都是以时间作为参考的。所以在使用时,可能需要初始化随机种子。
下面是MSDN对rand()函数说明的例子。
Example
Copy Code
// crt_randc
// This program seeds the random-number generator
// with the time, then displays 10 random integers
//
#include <stdlibh>
#include <stdioh>
#include <timeh>
int main( void )
{
int i;
// Seed the random-number generator with current time so that
// the numbers will be different every time we run
//
srand( (unsigned)time( NULL ) );
// Display 10 numbers
for( i = 0; i < 10;i++ )
printf( " %6d\n", rand() );
printf("\n");
// Usually, you will want to generate a number in a specific range,
// such as 0 to 100, like this:
{
int RANGE_MIN = 0;
int RANGE_MAX = 100;
for (i = 0; i < 10; i++ )
{
int rand100 = (((double) rand() /
(double) RAND_MAX) RANGE_MAX + RANGE_MIN);
printf( " %6d\n", rand100);
}
}
}
Sample Output
24052
20577
2235
29883
26046
22303
19311
5143
3208
8804
49
90
91
16
21
16
91
68
30
31rand()是C语言中产生随机数的一个函数,但是需要注意的是,产生的是伪随机数。
rand()用法举例:
产生1到100之间的随机数
#include<stdioh>
int
main(){
srand((unsigned)time(NULL));//产生随机数种子
int
rand_num=(rand()%100)+1;//产生1到100直接的随机数
printf("rand_num=%d\n",rand_num);
return
0;
}
代码截图:
扩展资料:
所谓的“伪随机数”指的并不是假的随机数。其实绝对的随机数只是一种理想状态的随机数,计算机只能生成相对的随机数即伪随机数。
系统在调用rand()之前都会自动调用srand(),如果用户在rand()之前曾调用过srand()给参数seed指定了一个值,那么
rand()就会将seed的值作为产生伪随机数的初始值;
而如果用户在rand()前没有调用过srand(),那么系统默认将1作为伪随机数的初始
值。如果给了一个定值,那么每次rand()产生的随机数序列都是一样的。
所以为了避免上述情况的发生我们通常用srand((unsigned)time(0))或者srand((unsigned)time(NULL))来
产生种子。
如果仍然觉得时间间隔太小,可以在(unsigned)time(0)或者(unsigned)time(NULL)后面乘上某个合适的整数。
例如,srand((unsigned)time(NULL)10)。
参考资料:
#include <stdioh>
#include <timeh>
int main()
{
srand(time(0));
int rnd = rand() % 1000;//产生1000以内的随机数
return 0;
}
计算机的随机数是伪随机数,就是用一个公式计算出来的。而这样肯定不会完全随机。
使这个结果看起来像是真的随机数的话,就需要把一个比较随机的初值赋给这个生成公式(相同的初值会产生相同的随机数)
所以一般使用当年的系统时间作为这个初值,也就是 使用随机数之前加入srand(time(0));
生成随机数rand() % 1000 模上一个数,使生成的随机数在1000之内,如果你想让他在100之内,就可以模100
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)