C# 之 概率随机数

简介: 概率随机数:是在1-10内产生随机数,但是每个数生成的概率不同。例如1-9概率为10%,10的概率是%90;
随机函数是产生随机数的函数。即以等概率产生某一范围(认为规定)内的任意数。例如,产生1~10范围内的整数,随机函数每次都以10%的概率产生1,2,3,……,10中的任何一个数。
概率随机数:是在1-10内产生随机数,但是每个数生成的概率不同。例如1-9概率为10%,10的概率是%90;

一,问题模拟:

比如:求1-5的数指定概率下的随机,概率如下:

数字 概率
1 10%
2 10%
3 10%
4 20%
5 50%

二,方法设想:

1, 将每个数按照概率占比放到一个数组中(比如:[1,2,3,4,4,5,5,5,5] ),然后求【0~数组长度】的随机数,所求值再取其数组值,即为所求;

2, 将指定概率作为权值添加到一个数组

  • 将指定概率作为权值添加到一个数组:arr;
  • 求数组arr中的所有数值的和:total ;
  • 求 [0-total]中间的随机数:r;

    • 找这个随机数r的在数组arr哪个arr[i] 中,然后返回这个:i
    • 使用这个i解决问题(比如上述问题:i+1即为所求)

三,代码实现:

class Program
{
    static void Main(string[] args)
    {
        // 概率数组
        int[] arr = new int[] { 10, 10, 10, 20, 50 };
        Console.WriteLine("概率随机数~");
        Console.WriteLine("随机到的索引:"+ ProbabilityRandomRumber(arr));
    }

    /// <summary>
    /// 概率随机数
    /// </summary>
    /// <param name="rate"></param>
    /// <returns></returns>
    public static int ProbabilityRandomRumber(int[] rate)
    {
        int total = 0;
        for (int i = 0; i < rate.Length; i++)
        {
            total += rate[i];
        }
        Random myRandom = new Random();
        int r = myRandom.Next(0, total);
        Console.WriteLine("随机数是:" + r);
        int t = 0;
        for (int i = 0; i < rate.Length; i++)
        {
            t += rate[i];
            if (r < t)
                 return i;
        }
        return 0;
    }
 }

1.1

相关文章
|
7月前
|
算法 程序员 C语言
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践
202 0
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(二)
|
1月前
|
机器学习/深度学习 算法 安全
随机性、熵与随机数生成器:解析伪随机数生成器(PRNG)和真随机数生成器(TRNG)
随机性在密码学、仿真和机器学习等领域中至关重要,本文探讨了随机性、熵的概念以及伪随机数生成器(PRNG)和真随机数生成器(TRNG)的原理和应用。PRNG通过算法生成看似随机的序列,适用于高效需求;TRNG利用物理过程生成真正随机数,适用于高安全需求。文章还讨论了两者的协同应用及其面临的挑战。
124 5
随机性、熵与随机数生成器:解析伪随机数生成器(PRNG)和真随机数生成器(TRNG)
|
6月前
|
设计模式 算法 程序员
伪随机数为什么叫伪随机数
伪随机数为什么叫伪随机数
72 1
|
7月前
|
资源调度 算法 C++
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践(一)
【C++ 随机数分布类型 】深入探索C++随机数分布:原理、应用与实践
238 0
|
7月前
|
算法 安全 C语言
【c++】如何均匀生成随机数
【c++】如何均匀生成随机数
172 0
|
人工智能 移动开发 BI
概率论<一>——随机事件与概率(二)
概率论<一>——随机事件与概率
概率论<一>——随机事件与概率(二)
|
索引 Python
随机生成四则运算题并判断正确率
随机生成四则运算题并判断正确率
167 0
随机生成四则运算题并判断正确率