通过rand() srand()生成的数字过小无法满足转化为三位及以上位十六进制数的条件,请问还有没有其他方法能够实现这个想法
你可以做个映射,把rand()
函数返回值的范围映射到你想要的数值范围,比如下面例子是映射到[10,20]
范围内的随机数
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int my_rand(int a, int b)
{
return a + (int)((b - a) * (double)rand() / RAND_MAX + 0.5);
}
int main()
{
srand(time(NULL));
for (int i = 0; i < 10; i++)
printf("%d ", my_rand(10, 20));
return 0;
}
你的意思是rand生成的数太小吗