`
guojingxf
  • 浏览: 67384 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java中生成随机数 1.随机数比较 2.控制范围随机数 3.获取范围内不重负随机数

阅读更多

最近有几个朋友都在做项目中的  抽奖部分,可是网上抽奖,多少有那么点水份。

 

在Java 中我们可以使用java.util.Random类来产生一个随机数发生器。它有两种形式的构造函数,分别是Random()和Random(long seed)。Random()使用当前时间即System.currentTimeMillis()作为发生器的种子,Random(long seed)使用指定的seed作为发生器的种子。   很多应用程序会发现 Math 类中的 random 方法更易于使用。

 

做一个例子,大家可以找出下面的问题,主要是性能方面. 例子是随机产生一个只包含x个8的x的(int)5位数;

问题如下:随机产生一个5位数,要求其中包含一个8或者几个8,用户个人设置显示的个数

1.首先我们来看下规律

一个5位数字,只包含一个8的有多少

 

个位   十位    百位         千位     ........

08     18

         28

         38

         48

         58

         68

         78

         98

         

1         9      9*9       9*9 *9  ...........

 

其实上面有点迷惑啦大家的思路,但是要看个人咋想!!用户在设置多少的时候也不能超过最大值。

 

1.先看mian方法

    Random rd = new Random();
    int num = rd.nextInt(99999 - 9999) + 9999; // 精确定位5位数值

产生精确定位5位数值,大家在其他使用可以随便定义

 

具体程序如下,相信大家一定了解,如果不了解,就运行下..下班拉,回家戳麻将!!!

 

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class RmInt {

 public int getNum(int randomNum, int nb) {
  int num_5 = randomNum / 10000; // 万位
  int num_4 = randomNum % 10000 / 1000; // 千位
  int num_3 = randomNum % 1000 / 100; // 百位
  int num_2 = randomNum % 100 / 10; // 十位
  int num_1 = randomNum % 10 / 1; // 个位

  int[] nums = new int[] { num_5, num_4, num_3, num_2, num_1 };
  // 获得8的个数
  int num = this.getloop(nums);
  // 返回符合要求的randomNum
  if (nb == num) {
   return randomNum;
  }
  return 0;
 }

 /**
  * 判断随机数里8的个数 有1个8 returnNum=1
  */
 public int getloop(int[] nums) {
  int returnNum = 0;
  // 循环将5位数各个位置的数值比较,是8的个数相加
  for (int j = 0; j < nums.length; j++) {
   int k = nums[j];
   if (k != 0 && k % 8 == 0) {
    returnNum += 1;
   }
  }
  return returnNum;
 }

 public static void main(String[] args) {
  RmInt r = new RmInt();
  /*
   * Random 随机数生成器 获取5位数 nb 用户设置8的个数 arrInt 符合用户要求的数值
   */
  int userSize = 20;//用户设置需要的个数
  int nb = 2;//含8的个数
  
  List arrInt = new ArrayList();

  int num_nub = 0;// 循环次数
  while (num_nub < userSize ) {
    Random rd = new Random();
    int num = rd.nextInt(99999 - 9999) + 9999; // 精确定位5位数值
    
    // 调用rdnum方法
    int rdnum = r.getNum(num, nb);
    //判断下如果设置的rdnum不为0(不符合要求为0)
    if (rdnum != 0) {
     arrInt.add(rdnum);
     num_nub += 1;
    }
  }
  for (int t = 0; t < arrInt.size(); t++) {
   System.out.print(t+":"+arrInt.get(t)+'\n');
  }

 }
}

 

 

上面是产生随机数的一种思路,下面再说种,具体的要求和上面一样,大家来看对不对

 

我按上面的办法得到一个不包含8的4位数的随机数值比如2456,然后1-5之间我再生成一个,那么1-5无论生成几都把他当成8

 

比如生成2,那么最后得到数值28456    比如生成1,那么最后得到数值82456    

 

 

这样的话我们就遗漏9,当然如果是实现方面没有问题,但是和你的需要可能不一样。我只说是一种思路,不去说他在那里使用不好,那里使用好。。 

 

 

 

分享到:
评论

相关推荐

    java用法StdRandom生成随机数_.docx

    StdRandom类是Java语言中用于生成随机数的工具类,提供了一系列的静态方法来满足不同用例的需求。该类的主要功能是生成随机数,包括基本的随机数、uniform分布随机数、bernoulli分布随机数、gaussian分布随机数等。...

    java根据比例概率生成随机数

    这些概率按照以下顺序递减:0(50%)、1(20%)、2(15%)、3(10%)、4(4%)和 5(1%)。 在 PercentageRandom() 方法中,作者使用 Math.random() 方法生成一个双精度浮点数的随机数,然后根据这个随机数判断返回...

    易语言Js生成随机数源码.rar

    这个函数返回一个介于0(包含)到1(不包含)之间的随机浮点数,可以通过乘以特定范围并进行取整来生成指定范围内的整数。例如,生成1到10的随机整数,可以使用`Math.floor(Math.random() * 10) + 1`。 三、源码...

    Java基础之Random随机数.docx

    在这个实例中,我们使用Random类生成了一个随机数,范围是[50,100),然后判断这个数是否是3的倍数。 Random类的应用 Random类有很多实用的应用场景,例如: * 生成随机的用户ID * 生成随机的验证码 * 生成随机的...

    S7-300生成随机数.rar

    这个“S7-300生成随机数.rar”压缩包很可能包含了关于如何在S7-300 PLC中实现随机数生成的详细教程或代码示例。 生成随机数在工业控制中有多种用途,例如模拟真实世界的不确定性、进行测试与调试、或者在一些随机化...

    VBA生成不重复的随机数源码.txt

    VBA生成不重复的随机数源码.txt

    VC 生成随机数曲线.rar

    在VC++中,可以使用`&lt;cstdlib&gt;`库中的`rand()`函数生成[0, RAND_MAX]范围内的均匀分布随机数,通过适当调整范围可满足特定需求。 - **正态分布(Normal Distribution)**:也称为高斯分布,具有钟形曲线特征,其...

    java生成16位随机数

    java生成16位随机数

    java使用StdRandom生成随机数.doc

    java使用StdRandom生成随机数.doc

    易语言源码易语言Js生成随机数源码.rar

    如果你想生成的是浮点数,可以使用“随机数.浮点”命令,同样提供两个参数,表示最小值和最大值。 在JavaScript中,生成随机数的方法有所不同。你可以使用`Math.random()`函数,它会返回一个介于0(包括)和1(不...

    java 求最大的随机数

    在Java编程语言中,生成随机数是一项常见的任务,特别是在各种算法和模拟场景中。要找到“最大的随机数”,首先我们需要了解Java中生成随机数的方法。Java提供了`java.util.Random`类来生成随机数。下面我们将深入...

    「在EXCEL中生成随机数」.pdf

    1. **RAND()函数**:这是Excel中最基础的随机数生成函数,它会返回一个在0(包含)到1(不包含)之间的随机浮点数。例如,`=RAND()` 将生成一个0到1的小数。 2. **修改RAND()的取值范围**:如果你需要生成特定范围...

    Java简易随机数生成

    Java简易随机数生成 下载完请输入测试代码 public static void main(String[] args) { System.out.println(random(50,100));//example System.out.println(random(50.0,100.0)); }

    「在EXCEL中生成随机数」.docx

    1. **RAND()函数**:这是Excel中最基本的随机数生成函数,它会返回一个介于0(包括)和1(不包括)之间的随机小数。例如,`=RAND()` 将生成一个0到1之间的随机数。 2. **调整RAND()的取值范围**:如果需要生成其他...

    Java生成32位随机数,8位随机数

    Java生成32位随机数,短位随机数工具类

    java生成随机数的常用方法分析

    在 Java 编程中,生成随机数是非常常见的需求,例如在测试、模拟、游戏等场景中。随机数可以使用多种方法生成,本文将对 Java 生成随机数的常用方法进行分析。 1. 使用 Math.random() 生成随机数 Math.random() ...

    Java产生随机数的两种方式

    在Java编程语言中,生成随机数是常见的需求,可以用于模拟、测试、加密等多种场景。本文将详细探讨Java中生成随机数的两种主要方法:`java.lang.Math.random()`静态方法和`java.util.Random`类。 首先,我们来看`...

    VC 在指定的区间内生成随机数.rar

    本资源“VC 在指定的区间内生成随机数.rar”提供了一个源码示例,帮助开发者理解如何在C++中实现这一功能。 在C++中,生成随机数通常涉及到`&lt;cstdlib&gt;`或`&lt;random&gt;`库。`&lt;cstdlib&gt;`库包含`rand()`函数,这是一个...

    java生成十个不重复的随机数

    在Java编程中,生成十个不重复的随机数是一项常见的任务,尤其在进行数据模拟、测试或者游戏设计等场景。要实现这个功能,我们需要利用到Java的集合框架和Math类中的随机数生成方法。下面我们将详细讲解如何实现这个...

Global site tag (gtag.js) - Google Analytics