`

关于随机数生成的一个现象

阅读更多

来自于Effective Java 2nd Item47 Know and use the libraries

 

import java.util.Random;

public class Test {
	private static final Random rnd = new Random();
	
	public static void main(String[] args) {
		int n = 2 * (Integer.MAX_VALUE / 3);
		
		int low = 0;
		for (int i = 0; i < 1000000; i++)
			if (random(n) < n / 2)
				low++;
		System.out.println(low);
	}

	// Common but deeply flawed!
	static int random(int n) {
		return Math.abs(rnd.nextInt()) % n;
	}
}

 

结果是什么,猜一下,然后再运行一下,为什么?

分享到:
评论

相关推荐

    产生perato随机数的c代码

    c语言代码,能够产生符合帕累托分布的随机数,帕累托是从大量真实世界的现象中发现的幂次定律分布,在负载测试中, 通常的做法是估计80%的流量将在总时间段的特定20%内发生。

    GameY

    GameY Game Y是我创建的一个个人项目,目的是展示我对自定义数据结构,随机数生成以及游戏开发工作流程的理解。 作为一个单独的项目,我没有动画,图形或纹理专家的特权。 因此,我没有花太多时间在游戏的图形美感上...

    node-red-contrib-random-event-generator:一个Node-RED节点,用于生成随机事件

    一个Node-RED节点,用于以随机间隔生成事件。 安装 使用Node-RED Editor菜单中的Manage Palette选项或在Node-RED用户目录(通常为~/.node-red )中运行以下命令: npm install node-red-contrib-random-event-...

    软件测试规范

    随机数法 .............................................................................................................................................. 9 六.白盒测试方法 .................................

    asp在线考试系统(asp+access实现)

    strid1=strid1 & rs("ID") & ","是将所有选出的试题的id号用逗号分割后存储在strid1一个变量中,以方便的把所有选出的试题的id号传到result.Asp文件中,这也是本设计的一个独特的地方。需要说明的是strid1变量的...

    VANET的一种改进的隐私感知切换认证协议

    因此,为了增强协议LIAP的安全性,我们将终端的伪身份与一个随机数连接起来,然后使用二次余数运算对连接的信息进行加密,生成的动态身份可以抵御用户位置跟踪攻击。 此外,为了在切换过程中抵抗并行会话攻击,新的...

    ASP设计在线考试系统OnlineTest

    一个关于在线考试的web系统,具有试卷生成功能的ASP+SQL Server源码-an examination of online web system, Generating function papers with the ASP SQL Server source code ======================== 考试系统...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    后打开另一个窗口,一个是打开另一个窗口而自身不消失。可以看到他们实现的 方法是不同的。 三、Qt Creator 登录对话框(原创) 实现功能: 在弹出对话框中填写用户名和密码,按下登录按钮,如果用户名和密码均正确...

    实验三-MATLAB绘图(含实验报告).doc

    生成1×10 维的随机数向量a,分别用红、黄、蓝、绿色绘出其连线图、杆图、阶梯图和条形图,并 分别标出标题"连线图"、"杆图"、"阶梯图"、"条形图"。 2、绘制函数曲线,要求写出程序代码。 (1) 在区间[0:2π]均匀的取...

    c语言编写单片机技巧

    而汇编语言,一条指令就对应一个机器码,每一步执行什幺动作都很清楚,并且程序大小和堆栈调用情况都容易控制,调试起来也比较方便。所以在单片机开发中,我们还是建议采用汇编语言比较好。 如果对单片机C语言有...

    C#编程经验技巧宝典

    72 &lt;br&gt;0102 将字符串首字母转换大写 72 &lt;br&gt;0103 如何进行字节数组和字符串的相互转换 72 &lt;br&gt;0104 如何把一个按空格分割的字符串存储在一个ArrayList数组中 73 &lt;br&gt;4.2 获取字符串信息 73 ...

Global site tag (gtag.js) - Google Analytics