【问题标题】:How to make combined random number matrix如何制作组合随机数矩阵
【发布时间】:2011-09-30 08:06:32
【问题描述】:

我很难弄清楚如何生成一个从 1 到 8 范围内重复两次的随机数,并使其成为这样的矩阵:

5 8 2 5

3 6 4 1

7 6 2 3

4 7 8 1

顺便说一句,我打算在 android 上制作这个。

提前致谢。

【问题讨论】:

    标签: android algorithm


    【解决方案1】:

    我假设您想要一个包含所有数字 1-8 两次的随机 4x4 矩阵。

    您可以轻松地将 16 个数字的列表转换为 4x4 矩阵。因此,您需要的是 1-8 个数字的随机列表。

    List<Integer> list = new ArrayList<Integer>();
    for (int i = 1; i <= 8; i++) {
      list.add(i);
      list.add(i);
    }
    // list  = [1,1,2,2,3,3,..,8,8];
    Collections.shuffle(list);
    // gives something like [1,4,5,2,4,7,..8,1]
    

    要将此列表转换为矩阵,只需逐行读取,一次读取 4 个数字。

    【讨论】:

    • 我无法相信这样的事情会这么简单。我的心情有点紧张。感谢您的帮助。你明白了。
    【解决方案2】:

    你真正想要的不是随机数。而是一组随机顺序的特定数字!

    所以从需要的集合升序开始

    int[] mySet = Array{1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8}
    

    然后做类似的事情

    for (x = 1;99,x++) {
        from = (int)(Math.random()*8);
        to = (int)(Math.random()*8);
        if (from != to) {
           int swap = mySet[to];
           mySet[to] = mySet[from];
           mySet[from] = swap;
        }
    }
    

    【讨论】:

    • 大声笑,我很抱歉,但你明白了。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 2012-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-09
    • 1970-01-01
    相关资源
    最近更新 更多