c#-C#产生100个随机数,要求它们的和是100,请问怎么实现?要充分随机化。

问题描述

C#产生100个随机数,要求它们的和是100,请问怎么实现?要充分随机化。

C#产生100个随机数,要求它们的和是100,请问怎么实现?要充分随机化。

解决方案

产生100个随机数,然后按比例缩放。

要具体程序,请先采纳。

解决方案二:

Random ran=new Random();
int RandKey=ran.Next(0,99);
for(int i=0;i<100;i++){
首先生成一个0到99的随机数,然后用100减去生成的随机数
int temp=ran.Next(0,100-RandKey);
}

最后一个不用生成

解决方案三:

private List Get100Numbers()
{
List rlts = new List();
double sum = 0;
for (int i = 0; i < 100; i++)
{
double number = this.GetRandomValue(i);
sum += number;
rlts.Add(number);
}
double rate = 100 / sum;
sum = 0;
for (int i = 0; i < rlts.Count; i++)
{
rlts[i] = rlts[i] * rate;
sum += rlts[i];
}
return rlts;
}

    private double GetRandomValue(int index)
    {
        Random r = new Random((int)DateTime.Now.Ticks + index);
        double rlt = r.NextDouble() * 100;
        return rlt;
    }

解决方案四:

Random rnd = new Random();
var query = Enumerable.Range(0, 100).Select(x => rnd.NextDouble())ToArray();
var query = query.Select(x => x / query.Sum() * 100.0).ToArray();

解决方案五:

 Random rnd = new Random();
var query = Enumerable.Range(0, 100).Select(x => rnd.NextDouble())ToArray();
query = query.Select(x => x / query.Sum() * 100.0).ToArray();
时间: 2024-09-21 22:47:33

c#-C#产生100个随机数,要求它们的和是100,请问怎么实现?要充分随机化。的相关文章

帮忙找下错,产生100个随机数,输出素数的时候只显示最后一个

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Web;usingSystem.Web.UI;usingSystem.Web.UI.WebControls;namespaceWeb{publicpartialclassWebForm1:System.Web.UI.Page{protectedvoidPage_Load(objectsender,EventArgse){}int[]range

1到100产生随机数 并猜产生的随机数 如果猜对直接输出 猜不对继续猜问题

问题描述 希望大神们给指点一下谢谢! 解决方案 解决方案二:继续猜随机数要重新生成么?解决方案三:嗯是的给指点一下谢谢喽解决方案四:while(1==1){//产生一个随机数inta=随机数://输入的数intb=输入的数:if(a==b){//输出结果//终止循环break;}system.out.println("继续猜");}解决方案五:importjava.util.Scanner;publicclassGuess{publicstaticvoidmain(String[]ar

ASP.net随机数应用实例

asp.net|随机|应用实例 大家可能都用过Chinaren的校友录,不久前它的留言簿上加了一个防止灌水的方法,就是系统每次产生一个由随机的数字和字母组成的图片,每次留言必须正确地输入这些随机产生的字符,否则不能添加留言.这是一个很好的防止恶意攻击的方法,其核心的技术就是如何产生随机数.Chinaren网站是使用PHP实现的,而我们可以充分利用ASP.net的强大功能很轻易地实现. ??在.net Framework中提供了一个专门用来产生随机数的类System.Random,使用这个类时必须

用C#生成不重复的随机数

对于随机数,大家都知道,计算机不可能产生完全随机的数字,所谓的随机数发生器都是通过一定的算法对事先选定的随机种子做复杂的运算,用产生的结果来近似的模拟完全随机数,这种随机数被称 作伪随机数.伪随机数是以相同的概率从一组有限的数字中选取的.所选数字并不具有完全的随机性,但是从实用的角度而言,其随机程度已足够了.伪随机数的选 择是从随机种子开始的,所以为了保证每次得到的伪随机数都足够地"随机",随机种子的选择就显得非常重要.如果随机种子一样,那么同一个随机数发生器产生 的随机数也会一样.一

shell如何生成指定范围随机数与随机字符串

1.使用系统的 $RANDOM 变量 fdipzone@ubuntu:~$ echo $RANDOM 17617 $RANDOM 的范围是 [0, 32767] 如需要生成超过32767的随机数,可以用以下方法实现. 例:生成400000~500000的随机数 #!/bin/bash function rand(){ min=$1 max=$(($2-$min+1)) num=$(($RANDOM+1000000000)) #增加一个10位的数再求余 echo $(($num%$max+$min

php生成多个不重复的随机数实例程序

 代码如下: <?php //range 是将1到100 列成一个数组 $numbers = range (1,100); //shuffle 将数组顺序随即打乱 shuffle ($numbers); //array_slice 取该数组中的某一段 $no=6; $result = array_slice($numbers,0,$no); for ($i=0;$i<$no;$i++){ echo $result[$i]."<br>"; } print_r($r

面试题:产生一个长度为100的数组,为数组中的每一项随机填充1-100之间的数并且保证不重复

这是一道面试题: 参考网上3种方法,C#实现: 方法一: #region 方法一 //存放1-100个数 int[] num = new int[100]; //indexNum[0]=1;...indexNum[99]=100;(不重复) for (int i = 0; i < num.Length; i++) { num[i] = i + 1; } Random r = new Random(); //存放最终结果 int[] result = new int[100]; int max =

随机数是骗人的,.Net、Java、C为我作证

随机数是骗人的,.Net.Java.C为我作证 几乎所有编程语言中都提供了"生成一个随机数"的方法,也就是调用这个方法会生成一个数,我们事先也不知道它生成什么数.比如在.Net中编写下面的代码: Random rand = newRandom(); Console.WriteLine(rand.Next()); 运行后结果如下:       Next()方法用来返回一个随机数.同样的代码你执行和我的结果很可能不一样,而且我多次运行的结果也很可能不一样,这就是随机数. 一.陷阱     

Cocos2dx 3.0 过渡篇(五) 随机数的获取

本来上午是要转载一篇看起来还不错的博客,被cocos2dx官方微博推荐过.谁知道早上打开链接时那篇博客已经转为私密了.早知道昨晚就应该复制一下内容,今天厚脸皮的来篇原创岂不妙哉.哈哈. 1.简单的随机数用法:CCRANDOM_0_1 示例如下: [cpp] view plaincopy int HelloWorld::getRand(int start,int end)   {    float i = CCRANDOM_0_1()*(end-start+1)+start;  //产生一个从st