C语言产生一个[M, N]区间上的随机数

来源:互联网 发布:数控锥度螺纹编程实例 编辑:程序博客网 时间:2024/06/05 21:16

//产生区间0-2^32区间上的随机数unsigned int my_rand32(unsigned int M, unsigned int N){return (unsigned int)((double)rand()/(double)RAND_MAX*(N-M+1)+M);}//产生区间0-2^64区间上的随机数unsigned __int64 my_rand64(unsigned __int64 M, unsigned __int64 N){return (unsigned __int64)((double)rand()/(double)RAND_MAX*(N-M+1)+M);}

上述[M, N]意思是,和数学表达方式一样,即落在的区间包含着M, 包含着N。

上述的__int64是VC、VS20XX的表达,若在Linux环境下,换成long long类型。

测试:

for (int i=0; i<10; i++){unsigned int r0 = my_rand0(0, 0xFFFFFFFF-1);printf("1. =%ld, %x\r\n", r0, r0);unsigned __int64 r1 = my_rand1(0, 0xFFFFFFFFFFFFFF0);printf("2. =%I64d, %I64x\r\n", r1, r1);}