- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有以下 C 程序来循环生成随机数。虽然这对整数很有效,但当我尝试生成一个介于 0 和 1 之间的随机 double 值时,该值在整个循环中保持不变。
来源:
#include <stdlib.h>
#include <stdio.h>
#include <time.h>
int main(int argc, char** argv) {
srand(time(NULL));
for(int i=0; i<5; i++) {
printf("%d\n", rand());
}
for(int i=0; i<5; i++) {
printf("%d\n", (double) rand() / RAND_MAX);
}
}
输出:
>gcc -O3 -o test test.c -lm
>./test
787380606
1210256636
1002592740
1410731589
737199770
-684428956
-684428956
-684428956
-684428956
-684428956
最佳答案
您的代码的行为未定义。
(double) rand()/RAND_MAX
是 double
类型的表达式。这需要在 printf
调用中使用 %f
格式说明符。
(另请注意,(double) rand()/RAND_MAX
可以绘制 1.0
,这是特殊的。通常您将 RAND_MAX + 1
写在分母。)
关于c - 随机双循环保持不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47549990/
我有一个关于在 R 中执行双循环的明显问题,但无法在此网站上找到答案。我正在使用以下代码: mu <- c(0, .2, .5, .8) sco <- matrix(nrow = 50, ncol =
是否有可能循环 2 列表与另一个大小最小的列表“重新循环”? 例子: list = [1,2,3,4,5,6,7,8,10] list2 = [a,b] newlist = [] for numb
我有一个这样的对象 objs: - { key1: value1, key2: [value2, value3] } - { key1: value4, key2: [value5,
我正在处理一个目录,其中一些列表具有与其关联的图像,而其他列表则没有。我想知道如何在循环中编写循环来获取结果。 例如,用户选择他们想要结果的州,查询将转到数据库,请求该州的所有列表。 Sorry, t
我在 2 个 for 循环中有复选框。我想强制它们表现得像单选按钮一样。每个 Q(第一个循环)只能选择一个选项。我有一个和平的代码,但它不起作用。如何更改? script type="text/jav
我遵循了 this post 的答案,但是,这似乎对我不起作用。我有一个第一个二维数组,我想在每个外循环之间超时,而不是在外循环中超时。 这是 this Fiddle 的片段显示我尝试过的三种方法之一
我使用最小编辑距离算法来查找相似的字符串。 我的代码主题是在输入数据中找到爱好最接近的夫妇。 Hobby type A B C D E F G H I J K L M N O P Q R S T U
我正在尝试优化用于计算两个方阵元素的乘积的双和的代码。假设我们有两个大小为 n、W 和 V 的方阵。需要计算的对象是一个带有元素的向量B 简单来说:计算两个不同矩阵中两个不同行的逐元素乘积并求它们的和
我是一名优秀的程序员,十分优秀!