任务要求

计算两个随机选取的、小于或者等于N的互异正整数的概率。

事实上,当N增大时,结果将趋于6π2\frac{6}{π^2}π26​

最后会测一下效率。

Java编程实现

public class Main {public static int gcd(int m, int n) {if(m < n) {return gcd(n, m);}if(n == 0) {return m;}return gcd(n, m % n);}public static double probRelPrime(int n) {int rel = 0, tot = 0;for(int i = 1; i <= n; i++) {for(int j = i + 1; j <= n; j++) {tot++;if(gcd(i, j) == 1) {rel++;}}}return (double)rel / tot;}public static void main(String[] args) {for(int n = 500; n <= 64000; n *= 2) {long start = System.currentTimeMillis();double prob = probRelPrime(n);//System.out.println(prob);long end = System.currentTimeMillis();if(n == 500) {continue;}long elapsed = (end - start);System.out.print( String.format("%4d", n));System.out.print( String.format("\t%d", elapsed));System.out.print( String.format("\t%.9f", elapsed / (double)n / n));System.out.print( String.format("\t%.12f", elapsed / (double)n / n / n));System.out.print( String.format("\t%.9f", elapsed / (double)n / n / (Math.log10(n) / Math.log10(2))));System.out.println();}}}

测试结果

1000 31  0.000031000 0.000000031000  0.000003111
2000    93  0.000023250 0.000000011625  0.000002120
4000    453 0.000028313 0.000000007078  0.000002366
8000    1896    0.000029625 0.000000003703  0.000002285
16000   8199    0.000032027 0.000000002002  0.000002293
32000   35568   0.000034734 0.000000001085  0.000002321
64000   152640  0.000037266 0.000000000582  0.000002334

【Java】统计随机抽出两个小于等于N的互异正整数的频率相关推荐

  1. 【概率论】随机选出一对小于等于N的互异正整数

    文章目录 题目要求 程序设计 实现代码 测试结果 题目要求 计算两个随机选取的.小于或者等于N的互异正整数的概率. 事实上,当N增大时,结果将趋于 6 π 2 \frac{6}{π^2}

  2. Java 随机数练习之从26个英文字母(含大小写)和 0 - 9 数字中随机抽出4个字符,然后拼接成一个随机验证码

    从26个英文字母(含大小写)和 0 - 9 数字中随机抽出4个字符,然后拼接成一个随机验证码 判断输入的验证码 与 随机生成的验证码 是否相同(忽略大小写) 如果正确,则系统提示,"恭喜你验 ...

  3. Android点击图片随机,android 设置图片随机出现-两种方式

    android 设置图片随机出现-两种方式, 第一种方式:得到图片对应的Drawable实例,通过setImageDrawable(drawable)实现 //ImageView对应的id ivBg ...

  4. java 正负随机_如何产生一个随机的[0, n)范围内的Short值

    背景 最近在做一个Java的随机对象生成器.需要随机产生一些在[0, n)范围内的short值. 坑 很多人可能会说,这有什么难的,我刚学编程的时候就会了.然后给出下面代码. short value ...

  5. java在数组中放入随机数_如何在Java中随机播放数组

    java在数组中放入随机数 There are two ways to shuffle an array in Java. 有两种方法可以在Java中随机播放数组. Collections.shuff ...

  6. JAVA实现随机无重复数字功能

    本文给大家介绍如何在JAVA中实现随机无重复数字的功能.如果您是初学者的话,有必要看一看这篇文章,因为这个功能一般会在面试中遇到.包括我本人在招聘人员的时候也喜欢拿这个问题去问别人,主要看一看考虑问题 ...

  7. Java 实现抽奖的两种方式

    Java实现抽奖的两种方式 方式一:随机数在哪个区间内返回区间下标 方式二:随机数加入区间点集合排序返回随机数下标 代码示例: ①抽奖入参类型为BigDecimal: package com.cfay ...

  8. [统计]_怎样用数据炒菜:统计建模的两种文化

    这是之前发在个人公众号上的文章,希望能对读者有帮助. 现在我们经常能听到一个概念叫做"大数据",顾名思义,那就是海量的数据,如果再说大一点,那就是天量的数据,但是光有数据也不行,我 ...

  9. C语言——连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题, 如果输入答案正确,则显示“Right!”,否则显示“Not correct!”,不给机会重做, 10道题做完

    /连续做10道题,通过计算机随机产生两个1~10之间的加数给学生出一道加法运算题, 如果输入答案正确,则显示"Right!",否则显示"Not correct!" ...

最新文章

  1. 说了这么多次 I/O,可你知道其中的原理么
  2. 注解驱动的 Spring cache 缓存介绍
  3. django-模型类的查询方法
  4. Sql server 分解字符串(实现split)
  5. MAC VSCODE配置C语言开发环境
  6. GOF设计模式--简单工厂模式
  7. JS下载地图离线数据,前端下载谷歌离线地图
  8. 蓝宝石rx470d原版bios_狼神矿卡烤机89°C!强刷蓝宝石RX570超白金显卡BIOS降温75°教程...
  9. python+django+mysql二手交易系统毕业设计毕设开题报告
  10. 网吧服务器组装方案,网吧服务器配置方案有哪些
  11. android 7 uc flash,UC浏览器7.2版新增加FLASH游戏支持功能
  12. python的bytes数据类型
  13. WinHTTP Web Proxy Auto-Discovery Service 服务处于 停止 状态
  14. 经典面试题:手机扫描二维码的测试用例(建议收藏)
  15. 2021,你值得看的华为/字节/腾讯/京东/网易/滴滴面经分享
  16. 服务更新发布方式------“金丝雀、滚动更新、蓝绿部署”
  17. ViewPager中呈现前一页和后一页的内容
  18. java.lang.AssertionError: Activity needs to be set if initial lifecycle state is resumed
  19. Pandas、Numpy 性能优化秘籍(全)
  20. Kalibr安装教程

热门文章

  1. 课时40:类与对象:一些相关的BIF
  2. (转)如何使用caffe的MATLAB接口
  3. soapUI-JDBC Request
  4. perl学习之:函数总结
  5. Vuex状态管理方式
  6. 贪婪算法在求解最小生成树中的应用(JAVA)--Kruskal算法
  7. Spring Boot 单例模式中依赖注入问题
  8. 特殊表情存数据库处理
  9. linux命令基础知识 管道流,linux基础知识-I/O重定向,管道(示例代码)
  10. python加密敏感信息_仅需10行代码,使用python加密用户敏感数据