c - 在c编程中生成随机数的算术级数
问题描述
这是我现在的代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
float r;
srand((unsigned)time(NULL));
r = (float)rand()/RAND_MAX*20;
printf("%.1f\n",r);
return(0);
}
该代码可以生成一个从 0 -20 的十进制随机数,但我想生成一个像 0.5,1.0,1.5,2.0,2.5...19.5,20.0 这样的数字。
我应该在我的程序中添加什么?
解决方案
我会将随机数保留为int
1 到 40 之间的随机数。然后除以 2.0 得到你想要的数字。
就像是:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
float r;
int n;
srand((unsigned)time(NULL));
for (int i=0; i<10; ++i)
{
n = rand() % 40 + 1; // Gives random values 1, 2, …, 39, 40
r = n/2.0; // Divide by floating point 2 to get 0.5, 1.0, .. 20.0
printf("%.1f\n",r);
}
return(0);
}
那应该给你值 0.5, 1.0, 1.5, ...., 19.5, 20.0
样本输出:
14.0
0.5
11.0
4.5
15.0
8.0
19.5
18.0
19.0
6.0
推荐阅读
- javascript - How do you add a Fontawesome icon to a button in a JavaScript function
- python - 为什么 Python 3.8 将像 "\x48" 这样的字符串解释为 "H"。我想把它写成字符串中的“\x48”
- rust - 25519-dalek 的主要补充?
- pyspark - 在 pyspark 中聚合 Kolmogrov Smirnov 测试
- ssl - 用作 https 的反向代理时,nginx 行为缓慢
- html - 如何根据父容器内的可用空间在我的元素之间分配相同的高度?(我需要动态解决方案)
- javascript - 画布:删除对象后恢复图像
- python - python entry_point 没有模块名称 __main__
- excel - 运行时错误 5 无效的过程调用或参数
- sql - 计算和平均范围