懒狗的救赎 2022-06-08 00:20 采纳率: 0%
浏览 32

谁知道如何使用java同步打乱多个数组

我知道python能用numpy的shuffle实现。但java的shuffle不能同步实现,给定随机算子,每个数组实现结果还是不行。

求指导!

  • 写回答

2条回答 默认 最新

  • 赵4老师 2022-06-08 09:36
    关注

    参考下面C源代码的shuffle算法:

    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    int d[6];
    int i,n,a,b,t;
    int c,j;
    void main() {
        srand(time(NULL));
        printf("shuffle 0..n-1 demo\n");
        for (n=1;n<=5;n++) {/* 测试1~5个元素 */
            printf("_____n=%d_____\n",n);
            j=1;
            for (c=1;c<=n;c++) j=j*c;/* j为n! */
            j*=n*2;
            for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
                for (i=0;i<n;i++) d[i]=i;/* 填写0~n-1 */
                for (i=n;i>0;i--) {/* 打乱0~n-1 */
                    a=i-1;b=rand()%i;
                    if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
                }
                printf("%04d:",c);
                for (i=0;i<n;i++) printf("%d",d[i]);
                printf("\n");
            }
        }
        printf("shuffle 1..n demo\n");
        for (n=1;n<=5;n++) {/* 测试1~5个元素 */
            printf("_____n=%d_____\n",n);
            j=1;
            for (c=1;c<=n;c++) j=j*c;/* j为n! */
            j*=n*2;
            for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
                for (i=1;i<=n;i++) d[i]=i;/* 填写1~n */
                for (i=n;i>1;i--) {/* 打乱1~n */
                    a=i;b=rand()%i+1;
                    if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
                }
                printf("%04d:",c);
                for (i=1;i<=n;i++) printf("%d",d[i]);
                printf("\n");
            }
        }
    }
    
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 6月8日

悬赏问题

  • ¥15 关于#单片机#的问题:以ATMEGA128或相近型号单片机为控制器设计直流电机调速的闭环控制系统(相关搜索:设计报告|软件设计|流程图)
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥30 电脑误删了手机的照片怎么恢复?
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者
  • ¥15 CST2023安装报错
  • ¥15 使用diffusionbert生成文字 结果是PAD和UNK怎么办