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

相关文章
|
Web App开发 Python
Python使用selenium的Chrome下载文件报错解决
Python使用selenium的Chrome下载文件报错解决
478 0
|
前端开发 JavaScript
使用Element-UI中的el-upload实现文件的上传demo(亲测有用)
使用Element-UI中的el-upload实现文件的上传demo(亲测有用)
|
搜索推荐 云计算
在线教育平台
在线教育平台
1217 3
|
弹性计算 图形学
Unity之浅析 Entity Component System (ECS)
首先放出ECS官方文档 随着目前游戏对CPU性能要求的不断提升,单核高频的CPU对我们的帮助越来越有限。所以ECS(一种面向数据编程)多核心工作的方式也是大势所趋。
4032 0
|
11月前
|
人工智能 自然语言处理 搜索推荐
AI在教育中的潜力与挑战:开启智慧教育的新时代
AI在教育中的潜力与挑战:开启智慧教育的新时代
1164 19
|
9月前
|
图形学
unity噪声消融效果Shader实现
在 Unity 中实现噪声消融效果,利用噪声纹理和透明度裁剪技术。噪声纹理(如 Perlin 噪声)为物体表面提供随机参考值,透明度裁剪通过设置阈值控制显示与消失。具体步骤包括引入噪声纹理、设置阈值和边缘颜色,使用自定义着色器代码实现物体部分消失的视觉效果。通过调整材质球和噪声贴图,可优化最终呈现。
|
程序员 C语言
C语言内存管理:malloc、calloc、realloc与free函数详解
C语言内存管理:malloc、calloc、realloc与free函数详解
768 0
|
缓存 监控 API
抖音抖店 API 请求获取宝贝详情数据的调用频率限制如何调整?
抖音抖店API请求获取宝贝详情数据的调用频率受限,需遵循平台规则。开发者可通过提升账号等级、申请更高配额、优化业务逻辑(如缓存数据、异步处理、批量请求)及监控调整等方式来应对。
|
Web App开发 安全 前端开发
新一代WebOffice高版本谷歌Chrome打开、编辑、保存微软Office/金山WPS解决方案大盘点
随着互联网技术的不断发展,越来越多的企业开始采用在线办公模式,微软Office Word 是最好用的文档编辑工具,然而doc、docx、xls、xlsx、ppt、pptx等格式的Office文档是无法直接在浏览器中直接打开的,如果可以实现Web在线预览编辑OffIce,肯定会还带来了更高效、便捷的办公体验,为我们的工作带来了更多可能性。
1477 96
|
Web App开发
推荐一款chrome阅读插件
推荐一款chrome阅读插件
229 2