生成不重复的随机数
生成不重复的随机数
李大钊_ 发表于9个月前
生成不重复的随机数
  • 发表于 9个月前
  • 阅读 4
  • 收藏 0
  • 点赞 0
  • 评论 0

移动开发云端新模式探索实践 >>>   

摘要: 给定最大的随机数值以后根据当前数值生成一个数组A来存储这些数字,通过随机差生数组下表的方式来取得随机数,并放入B数组中,同时把A数组的最后一个数字放入已经取走的随机数的位置,然后数组下标减1.
import java.util.Arrays;

/**
 * [@author](https://my.oschina.net/bluell) 
 */
public class RandomUtil {
    public static int[] generate(int min, int max, int size) {
        if (min > max || max - min + 1 < size) {
            return new int[0];
        }
        int[] result = new int[size];
        int[] resource = new int[max];

        for (int i = min; i <= max; i++) {
            Arrays.fill(resource, i - 1, i, i);
        }

        for (int i = 0; i < result.length; i++) {
            int random = (int) (Math.random() * max);
            result[i] = resource[random];
            resource[random] = resource[max - 1];
            max--;
        }
        return result;
    }

    public static void main(String[] args) {
        //1-100,生成10个随机数
        Arrays.stream(generate(1, 100, 10)).forEach(System.out::println);
    }
}
标签: java 随机数
  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 0
博文 6
码字总数 1509
×
李大钊_
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: