java - 它是如何工作的?洗牌阵列
问题描述
我想了解java中的洗牌数组。我明白它是如何工作的
for(int i=myList.length-1; i>0; i--) {
int j = (int) (Math.random() * i +1);
double temp = myList[i];
myList[i]=myList[j];
myList[j]=temp;
System.out.print(myList[i]);
但我对这部分很困惑
int j = (int) (Math.random() * i +1);
它可以为 ex 创建相同的数字:
122512111
那么如果它具有相同的数字,它是如何工作和交换索引的。
解决方案
你的代码很好,不用担心。
在这里,我尝试int j = (int) (Math.random() * i +1);
单独向您解释:
Math.random()
float
:-> 为您提供0 到 1 之间的随机数。Math.random() * i
:-> 乘以i(index)
所以数字不要停留在范围0 to 1
和范围之间0 to myList.length-2
(Math.random() * i +1)
:-> 将我们的随机数加 1,因此范围将变为0 to myList.length-1
(int) (Math.random() * i +1);
:-> 将我们的号码从 转换float
为int
**以上所有范围都包括开始和结束号码:)
推荐阅读
- python - 带有资源句柄的 TensorFlow 自定义 C++ 操作
- cobalt - 当视频在 Cobalt 19 上开始播放时,是否有回调会在视频开始时提醒我?
- php - 如何使用没有 Ajax 的提交按钮一从表单发送多个参数
- javascript - javascript中的多元素样式
- javascript - 解析多行字符串
- html - html/css 代码中的“无法加载图像 #1”错误
- go - 如何检查请求是通过 HTTP 还是 HTTPS 发出的
- json - csv格式的JQ查询输出
- sonarqube - SonarQube 是否总是需要外部代码覆盖工具来显示声纳服务器上的覆盖范围?
- r - 如何摆脱“案例和控件必须是数字的或有序的”。在 pROC 包中?