怎么让rand()产生更大范围的伪随机数
如何让rand()产生更大范围的伪随机数?
由于rand()产生的随机数的范围受到RAND_MAX的约束,在windows下能产生随机数的最大范围是[0,32767],如何让rand()产生更大范围的伪随机数呢,比如[0,50000]?请各位大神赐教!
------解决方案--------------------
So easy!
由于rand()产生的随机数的范围受到RAND_MAX的约束,在windows下能产生随机数的最大范围是[0,32767],如何让rand()产生更大范围的伪随机数呢,比如[0,50000]?请各位大神赐教!
c语言
------解决方案--------------------
So easy!
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
unsigned long ulrand(void) {
return (
(((unsigned long)rand()<<24)&0xFF000000ul)
------解决方案--------------------
(((unsigned long)rand()<<12)&0x00FFF000ul)
------解决方案--------------------
(((unsigned long)rand() )&0x00000FFFul));
}
int i;
unsigned long ul;
void main() {
srand(time(NULL));
for (i=0;i<10;i++) {
ul=ulrand();
printf("%010lu 0x%08x\n",ul,ul);
}
}
//2337588057 0x8b54c359
//1977377429 0x75dc6295
//3607316769 0xd7034921
//0009828482 0x0095f882
//3350859779 0xc7ba1003
//0945794621 0x385fae3d
//3400869024 0xcab524a0
//3097846779 0xb8a563fb
//4287421124 0xff8cdac4
//3934016258 0xea7c5302