Tag: 随机

Java – 生成随机盐不是随机的

我正在尝试在Java中生成一个salt,以便使用散列算法进行安全密码存储。 我正在使用以下代码创建随机盐: private static String getSalt() throws NoSuchAlgorithmException { SecureRandom sr = SecureRandom.getInstance(“SHA1PRNG”); byte[] salt = new byte[16]; sr.nextBytes(salt); System.out.println(salt.toString()); return salt.toString(); } 这应该生成一个完全安全的,随机生成的盐,用于我的散列算法。 然而,当我运行代码时,它每次都会输出相同的盐…表明生成的盐根本不是随机的。 出于明显的安全目的,每个用户都需要一个独特的盐,但是如果我每次创建一个新帐户时都使用这个代码,那么每个用户将拥有相同的盐,从而无法首先使用它。 我的问题是:为什么这会一直给我相同的盐,我该怎么做才能确保每次运行代码时生成的盐都是完全随机的? 编辑: 以为我会包含整个哈希程序的源代码,现在已经修复并正常工作。 这是一个简单的原型,用于模拟在创建帐户时生成哈希值,然后在登录系统时检查密码。 package hashingwstest; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.util.Random; import java.util.Scanner; public class HashingWSTest { public static void main(String[] args) throws NoSuchAlgorithmException { Scanner […]

随机长,可以连续两次相同的数字

我想知道当前java 1.7的Random类实现,下面的代码是否有可能生成相同随机长度的两倍? Random rand = new Random((long) “some seed”.hashCode()); while(rand.nextLong() != rand.nextLong()){ } System.out.println(“Will this text ever be on the console?”); nextLong()和next()的Java源代码; public long nextLong(){ return ((long) next(32) << 32) + next(32); } protected synchronized int next(int bits){ seed = (seed * 0x5DEECE66DL + 0xBL) & ((1L <>> (48 – bits)); } 我会用false来回答这个问题,因为我认为java使用的随机方法在2 ^ 48周期内不会重复相同的数字,所以它永远不会在一行中生成两个相同的数字。 […]

java随机百分比

我需要生成n个百分比(0到100之间的整数),使得所有n个数字的总和加起来为100。 如果我只执行nextInt() n次,每次确保参数为100减去先前累积的总和,那么我的百分比是有偏差的(即第一个生成的数字通常是最大的等等)。 我如何以无偏见的方式做到这一点?

根据哈希创建一个统一的随机数

我需要一个基于由字符串和长整数组成的密钥的良好伪随机数。 当我使用相同的密钥查询时,我应该得到相同的随机数,而且,如果我使用略微不同的密钥进行查询,我应该得到一个非常不同的数字,即使说密钥中的长度是1,我试过这个代码并且随机数是唯一的,但对于相似的数字,它们似乎是相关的。 import java.util.Date; import java.util.Random; import org.apache.commons.lang3.builder.HashCodeBuilder; public class HashKeyTest { long time; String str; public HashKeyTest(String str, long time) { this.time = time; this.str = str; } @Override public int hashCode() { return new HashCodeBuilder().append(time).append(str).toHashCode(); } public static void main(String[] args) throws Exception { for(int i=0; i<10; i++){ long time = new Date().getTime(); […]

从给定列表中选择随机字符串

我试图让Java从给定列表中选择1个随机字符串。 字符串列表示例: 1153 3494 9509 2 0 0 0 0 1153 3487 9509 2 0 0 0 0 1153 3491 9525 2 0 0 0 0 1153 3464 9513 2 0 0 0 0 每行是1个字符串 这个想法是它选择一个,等待一段时间(如7200秒)并用列表中的另一个随机字符串替换前一个字符串(可能是相同的)。 循环有点无限。 有谁知道怎么做? PS。 我非常喜欢java:S,所以我只是说我应该使用arraylist(例如)不会工作:P

为什么使用带有硬编码种子的Random总会产生相同的结果?

Java中的以下简单程序使用java.util.Random类,因此它始终显示“hello world”。 代码片段如下所示。 package nomain; import java.util.Random; final public class J { public static String randomString(int seed) { Random rand = new Random(seed); StringBuilder sb = new StringBuilder(); for(int i=0;;i++) { int n=rand.nextInt(27); if (n==0) { break; } sb.append((char) (‘`’+n)); } return sb.toString(); } public static void main(String args[]) { System.out.println(randomString(-229985452)+’ ‘+randomString(-147909649)); } } 令人惊讶的是,它总是显示“hello […]

Collections.shuffle()是否足够随机? 实际的例子似乎否认了这一说法

我在java.util.List有1000个唯一对象,每个对象都引用一个图像,1000个列表中的每个图像都是唯一的,现在我想要将它们混洗,这样我就可以使用前20个对象并呈现它们到网站用户。 然后,用户可以单击“Shuffle”按钮,然后从头开始再次检索1000个图像并再次调用shuffle() 。 然而,似乎在1000个图像对象中,我经常在20个图像选择之间反复看到相同的图像。 有些东西似乎是错的,有什么更好的建议,建议吗? 我的代码非常简单: List imagePaths = get1000Images(); Collections.shuffle(imagePaths); int i = 0; for (String path: imagePaths) { … do something with the path … i++; if (i >= 20) break; } 我知道Collections.shuffle()分布很好:例如参见http://blog.ryanrampersad.com/2012/03/03/more-on-shuffling-an-array-correctly/ 但是,我只是觉得在一组20张图像中一次又一次地看到相同图像的概率应该少得多…… 输入高度赞赏。

为Random.nextInt()指定max和min?

可能重复: Java:在一个范围内生成随机数 我想在逻辑范围内生成一个随机int。 所以,比如说,我正在编写一个程序来“滚动”具有指定数量边的骰子。 public int rollDice(){ 随机生成器= new Random(); return generator.nextInt(sides); } 现在问题变成了这将返回边和零之间的值, 包括在内 ,这没有任何意义,因为大多数骰子从1到6,9等等。那么如何指定nextInt应该在1和边数之间工作?

android – 生成随机数,不重复

任何人都可以告诉我如何生成随机数,没有重复的例子 random(10)应该(可能)返回3,4,2,1,7,6,5,8,9,10而不重复 谢谢

Java中的Perlin Noise

对于我正在研究的元胞自动机项目,我需要使用不同的算法和技术随机生成二维布尔数组。 目前我在应用程序中只有一种随机化 – 循环遍历数组中的每个单元格并生成随机双变量,然后如果随机数高于0.5,那么我将该单元格设置为true,否则它将被设置为为假。 我想研究使用更有趣的算法生成这些布尔矩阵,例如Perlin Noise或类似的东西。 如果你知道除了Perlin Noise之外的其他任何东西,那么在地形生成中使用的噪声发生器或类似的东西可能会很好(Minecraft的世界一代给了我这个想法)。 唯一的问题是我不知道从哪里开始(任何想法?):)