生成随机数的小技巧

 

srand()函数

Sets a random starting point.

void srand(   unsigned int seed );

Parameters

seed

Seed for random-number generation

Remarks

The srand function sets the starting point for generating a series of pseudorandom integers. To reinitialize the generator, use 1 as the seed argument. Any other value for seed sets the generator to a random starting point. rand retrieves the pseudorandom numbers that are generated. Calling rand before any call to srand generates the same sequence as calling srand with seed passed as 1.

Requirements

Routine

Required header

srand

<stdlib.h>

 

注:不使用srand()而直接使用rand()函数和用srand(1)设置种子的效果一样,rand()将会返回任何时候都一样的非随机数,这显然是我们不想看到的。

1) 首先给srand()提供一个种子,它是一个unsigned int类型,其取值范围从0~65535
2)
然后调用rand(),它会根据提供给srand()的种子值返回一个随机数(032767之间)

给出一段代码,很简单,一看就懂:

// 生成指定范围内的随机数
unsigned  int  myrand(  const  unsigned  int  min,  const  unsigned  int  max )
{
    assert( max 
>= min );
    srand( unsigned(time(NULL)) );

   
//关键算法 rand()%(max-min+1)+min即得到[min,max]区间内的随机数
    return ( rand()%(max-min+1+ min ); 
}



// 生成无重复数字位的四位随机数
unsigned  int  myRand()
{
    unsigned 
int r;
    
bool flag=false;      //标志位,重复则设为true 
    
    srand( unsigned(time(NULL)) );
    
do{
       flag
=false;
       r 
= rand()%(9999-1000+1)+1000;
       
       
//获得随机数的各位数字 
       unsigned int a = r/1000;                 
       unsigned 
int b = (r-a*1000)/100;
       unsigned 
int c = (r-a*1000-b*100)/10;
       unsigned 
int d = r-a*1000-b*100-c*10;
       
       
if(a == b||== c||== d||== c||== d||== d)  //若有重复,flag置true,重新生成
            flag = true;
    }
while(flag);
    
    
return r;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值