Tag: 随机

在java中生成唯一的随机数

我想生成从1到9的随机数,我希望它们是唯一的。 这是我写的代码,它给了我9个不同的数字,从1到9,但我不知道生成唯一的数字。 int data[] = new int[10]; for(int i = 0; i < data.length; i++) { Random randomGenerator = new Random(); data[i] = randomGenerator.nextInt(10); System.out.println(data[i]); }

Math.random()是否统一生成伪随机数?

在另一个问题的评论中 ,dimo414指出OP代码的一个问题是它将非均匀地生成随机数。 所以我想知道为什么会这样? 它是固有的特定算法吗? 或者它是关于Math.random()本身的东西? 是因为在区间[0.0,1.0]中选择的数字的浮点表示? ps我理解使用Random.nextInt()的建议答案。 我还想了解更多关于使用Math.random()的缺陷。

Java Collections.shuffle()奇怪的行为

我正在经历一些奇怪的事情。 我有一个很大的长数列表。 它按升序包含大约20万个数字。 这些数字总是截然不同的; 它们不一定是连续的,但它们中的一些通常是连续的。 我想从这个列表中提取一个5k的已排序样本,所以基本上这是我的方法: 我调用java.util.Collections.shuffle(list); 我从现在洗牌的list提取出前5k个元素 我按升序对提取的元素进行排序 不过,我的结果有些奇怪。 如果不是连续的话,我提取的很多随机长片看起来很可疑。 例如,我得到了: … 38414931, 38414932, 38414935, 38414937, 38414938, 38414939, 38414941, … 这绝对不是随机的:/ 有一个更奇怪的事情。 在调试时,我尝试将初始list和提取的样本写入文件以进行比较。 如果我这样做,我的问题似乎消失了,我提取的Longs看起来像是正确的随机数。 当然,我已经重复了很多次,每次我都经历过这两种行为。 我错过了什么吗? 编辑:这是我正在使用的代码: List allNumbers = ; —>如果在这里我将allNumbers写入文件,它似乎工作正常 Collections.shuffle(allNumbers); HashSet randomNumbers = new HashSet(); for (int i = 0; i < 5000; i++) { randomNumbers.add(allNumbers.get(i)); }

生成具有非均匀分布的随机整数数组

我想编写Java代码来生成范围[1,4]中的随机整数数组。 数组的长度为N,在运行时提供。 问题是范围[1,4]不是均匀分布的: 这意味着如果我创建N = 100的数组,数字’1’将在数组中平均出现40次,数字’2’出现10次,依此类推。 现在我使用此代码生成范围[1,4]中的均匀分布的随机数: public static void main(String[] args) { int N; System.out.println(); System.out.print(“Enter an integer number: “); N = input.nextInt(); int[] a = new int[N]; Random generator = new Random(); for(int i = 0; i < a.length; i++) { a[i] = generator.nextInt(4)+1; } } 如何使用非均匀分布实现它,如上图所示?

Mac OS上的Java随机减速续表

几个星期前我问了这个问题,但我仍然遇到了问题,我有一些新的提示。 原来的问题在这里: Mac OS上的Java随机减速 基本上,我有一个java应用程序,它将作业拆分为独立的部分,并在不同的线程中运行它们。 线程没有同步或共享内存项。 它们共享的唯一资源是硬盘上的数据文件,每个线程都有一个打开的文件通道。 大部分时间它运行速度非常快,但偶尔会出现非常慢的情况。 如果我将CPU分析器连接到它,它将再次开始快速运行。 如果我拍摄CPU快照,它会说它在“自我时间”中花费大部分时间在一个除了检查一些(非共享的非同步)布尔值之外什么都不做的函数中。 我不知道这是多么准确,因为1,它没有任何意义,2,附加探查器似乎将线程从他们所处的任何模式中解决并修复问题。 此外,无论它是快速运行还是慢速运行,它总是完成并提供相同的输出,并且它永远不会降低总CPU使用率(在这种情况下为~1500%),这意味着线程不会被阻塞。 我尝试过不同的垃圾收集器,不同的内存空间部分,将数据输出写入非raid驱动器,并将所有数据输出放在线程中,将主工作线程分开。 有谁知道这可能是什么样的问题? 它可能是操作系统(OS X 10.6.2)吗? 我无法在Windows机器上复制它,但我没有类似的硬件配置。

从Min到Max生成随机整数?

我想生成一个随机的Integer: 在[Min,Max]范围内 范围可以是[5,20],[ – 29,-3]或[-13,13](它可以在任何范围内,正或负或介于两者之间) 代码在Android中正常运行 到目前为止我得到的是这个,但似乎不适用于负范围! 1 + (int)(Math.random() * ((Max – Min) + 1));

如何为所有按钮设置不同的随机数?

我有一个数组中的4个按钮。 我能够生成一个随机数并将其设置为所有这些按钮,但这不是我打算做的。 我真正想做的是为每个按钮设置一个随机数。 例如:我不是在所有四个按钮中都有’17’,而是每个按钮中可能有’18’,’15’,’10’和’11’。 而不是手动为每个按钮分配一个随机,我怎么能对所有按钮这样做? 这是我的代码: Random rbselection = new Random(); final int rbselector = rbselection.nextInt(4); final Button[] selectrb = new Button[4]; selectrb[0] = rb1; selectrb[1] = rb2; selectrb[2] = rb3; selectrb[3] = rb4; Random randoms1 = new Random(); int setRandoms1 = randoms1.nextInt(10); for(int allrbA=0; allrbA<4; allrbA++) { selectrb[allrbA].setText(""+setRandoms1); } 另外,有人知道如何在执行此操作时阻止单个数字输出两次吗? 例如,如果随机数设置在10到20之间,其中一个是12,那么除了12之外,任何人都知道如何将所有其他可能的数字设置在该范围之间吗?

从H2数据库中的大表中选择随机行

我的数据库中有一个大表(可能有数百万条记录),我需要选择#X随机行(假设#X在10到50之间),但我需要这个查询尽可能最佳。 该表如下所示: CREATE TABLE sample ( id bigint auto_increment PRIMARY KEY, user_id bigint NOT NULL, screen_name VARCHAR NOT NULL, … ); 我四处搜寻,发现这样的答案: SELECT * FROM sample ORDER BY RAND() limit X. 但它在我看来,这将获取整个表然后排序,不是吗? 我认为最好生成10或50个随机整数,然后select * from sample where rowid in () 。 但afaik,在H2中缺少rowid概念,所以我可以选择在我的表中使用ID列。 如果我可以使用单个SQL查询执行此任务,那将是非常棒的。 有什么好建议吗?

如何创建不均匀的范围数随机函数?

我们知道经典范围随机函数是这样的: public static final int random(final int min, final int max) { Random rand = new Random(); return min + rand.nextInt(max – min + 1); // +1 for including the max } 我想创建算法函数,用于在1..10之间的范围内随机生成数字,但是具有不均匀的可能性,例如: 1)1,2,3 – > 3/6(1/2) 2)4,5,6,7 – > 1/6 3)8,9,10 – > 2/6(1/3) 以上意味着该函数有1/2的机会返回1到3之间的数字,1/6的机会返回4到7之间的数字,以及1/3的机会返回8到10之间的数字。 谁知道算法? 更新: 实际上,1..10之间的范围仅作为示例。 我想要创建的函数适用于任何数字范围,例如:1..10000,但规则仍然相同:顶部范围为3/6(30%部分),中间范围为1/6(下一个) 40%部分),底部范围2/6(最后30%部分)。

如何在主要活动中循环一段代码?

我正在使用Android Studio,我希望每半秒循环一次 “Random rand = new Random(); int value = rand.nextInt(10);” 所以无论如何,谢谢你的时间,如果你能帮助那将是伟大的。 🙂 此致 伊戈尔 编辑 感谢大家的善意和有用的答案。 我会在尝试每一个后立即选择最佳答案。 (现在不在我的电脑上)但是再一次,谢谢大家。 编辑 对于任何有类似问题的人,我都可以使用它。 这是最终的代码。 包sarju7.click; import android.os.Handler; import android.support.v7.app.ActionBarActivity; import android.os.Bundle; import android.view.View; import android.widget.TextView; import java.util.Random; public class MainActivity extends ActionBarActivity { Random rand = new Random(); Handler handler = new Handler(); @Override protected void onCreate(Bundle […]