• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >C#教程 > c#获取相同概率随机数的算法代码

c#获取相同概率随机数的算法代码

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-28

通过本文主要向大家介绍了c#概率,c#概率函数,c#随机算法,随机概率算法,c#随机数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

这几天在做公司年会的一个抽奖软件,开始做的的时候,认为算法是很简单的,把员工的数据放进list里,把list的标号作为需要获取的随机数,根据得到的随机数就确定是谁中奖。后来测试发现,随机数的分布是非常不均匀的。后来才知道,原来计算机获取的随机数都是伪随机数,当抽奖的速度非常快的时候,获取的随机数是非常不均匀的,所以在每次抽奖的时候要添加延时。后来重新设计算法,最终实现了。

算法原理跟二分查找的过程有点像。一枚硬币抽中正、反面的概率是一样,当抽样的次数无限增多,抽中的概率是50%。

代码如下:

            Random r = new Random();
            int num = 2;
            int choose = r.Next(num);
            return choose;
            //MessageBox.Show(arr[choose].ToString());
        }
        public string GRandom(int n)
        {
            //if()
            if (n == 0)
            {
                //s = getRandom() + s;
                //System.Threading.Thread.Sleep(1);
                return s;
            }
            if (n % 2 == 0)
            {
                n = n / 2;

            }
            else
            {
                n = (n - 1) / 2;
                //s = getRandom() + s;
            }
            s = getRandom() + s;
            System.Threading.Thread.Sleep(20);
            GRandom(n);
            //System.Threading.Thread.Sleep(1);
            return s;
        }
        public Int32 Estimate(int n)
        {
            string num = GRandom(n);
            number = Convert.ToInt32(num, 2);
            if (number > n - 1)
            {
                //num = "";
                s = "";
                Estimate(n);
            }
            //else
            return number;
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            for (int i = 0; i < 100; i++)
            {
                label1.Content += Estimate(200) + ";";
                s = "";
            }
        }
    }
</div>

以上算法不是非常好,取消延时,将random对象设置为全局变量。修改版代码如下:

            //Random r = new Random();
            int num = 2;
            int choose = r.Next(num);
            return choose;
            //MessageBox.Show(arr[choose].ToString());
        }
        public string GRandom(int n)
        {
            //if()
            if (n == 0)
            {
                //s = getRandom() + s;
                //System.Threading.Thread.Sleep(1);
                return s;
            }
            if (n % 2 == 0)
            {<

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • c#获取相同概率随机数的算法代码

相关文章

  • 2017-05-28C#生成XML的三种途径小结
  • 2017-05-28C#实现Winform版计算器
  • 2017-05-28C#实现Zip压缩目录中所有文件的方法
  • 2017-05-28解析C#编程的通用结构和程序书写格式规范
  • 2017-05-28C#执行SQL事务用法实例
  • 2017-05-28C#提取网页中超链接link和text部分的方法
  • 2017-05-28c#操作xml帮助类分享(xml增删改查)
  • 2017-05-28C#中使用WinRAR实现加密压缩及解压缩文件
  • 2017-05-28C#中datatable去重的方法
  • 2017-05-28C#和SQL实现的字符串相似度计算代码分享

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • C#画笔Pen绘制光滑模式曲线的方法
    • listview控件实现点击列表头进行listview排序示例分享
    • C#定时器实现自动执行的方法
    • C#留言时间格式化
    • c#中使用自动属性减少代码输入量
    • C#使用webbrowser的常见用法实例
    • 深入c# GDI+简单绘图的具体操作步骤(四)
    • 使用mutex实现应用程序单实例运行代码分享
    • C#自适应合并文件的方法
    • C#在MySQL大量数据下的高效读取、写入详解

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有