给定平均值生成随机数C语言,c – 将随机数趋于/平均值设为特定值

我怎样才能生成0到1之间的随机数列表,但是它们的平均值为0.8?

我用C编写了这个小脚本,它会告诉你输出的数字是多少.这个问题并不是真正的C相关.

#include

#include

#include

int main(int argCount, char** argVector) {

std::cout << "Generating Randoms" << std::endl;

float avarage = 0.F;

srand(rand() + (int) time(NULL));

float ceiling = 0;

float bottom = 1;

for(unsigned int i = 0; i < 1000000; i++) {

float random = (float) (rand() % 101) / 100;

if(random > ceiling)

ceiling = random;

else if(random < bottom)

bottom = random;

avarage += random;

}

std::cout << "Avarage: " << avarage/1000000 << std::endl;

std::cout << "Ceiling: " << ceiling << std::endl;

std::cout << "Bottom: " << bottom << std::endl;

return 0;

}

这输出:

Generating Randoms

Avarage: 0.499287

Ceiling: 1

Bottom: 0

我希望天花板和底部仍然是0和1,但能够改变平均值.该算法最好也应该是有效的.

我再次发布C代码,但任何语言都可以.

在Java中,如果你想要根据给定平均值生成一定数量的随机数,可以使用`java.util.Random`类配合`nextInt()`方法。首先,你需要创建一个Random对象,并确定范围,因为`nextInt()`方法通常返回0(包含)到指定上限(不包含)之间的整数。假设你想生成n个服从正态分布即平均值为average的随机数,可以这样做: ```java import java.util.ArrayList; import java.util.List; import java.util.Random; public class RandomNumbers { public static void main(String[] args) { int average = 50; // 平均值 int n = 10; // 需要生成的随机数个数 List<Integer> randomList = generateRandomNumbers(average, n); System.out.println("随机数列表: " + randomList); } // 函数生成指定个数、平均值附近的随机数 private static List<Integer> generateRandomNumbers(int average, int n) { Random rand = new Random(); List<Integer> numbers = new ArrayList<>(); for (int i = 0; i < n; i++) { double randomDouble = average + rand.nextGaussian(); // 使用正太分布产生随机数 // 如果需要将结果限制在整数范围内,你可以使用Math.round()函数 // numbers.add((int)Math.round(randomDouble)); // 或者直接取整 numbers.add(Math.round(randomDouble)); } return numbers; } } ``` 在这个例子中,我们通过`nextGaussian()`方法生成接近平均值随机数,然后使用`round()`将其转换为整数。注意,`nextGaussian()`生成的是标准正态分布,如果你想生成其他分布的随机数,可能需要额外的处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值