Wednesday, 17 August 2016

Java random number with given length




I need to genarate a random number with exactly 6 digits in Java. I know i could loop 6 times over a randomicer but is there a nother way to do this in the standard Java SE ?



EDIT - Follow up question:



Now that I can generate my 6 digits i got a new problem, the whole ID I'm trying to create is of the syntax 123456-A1B45. So how do i randomice the last 5 chars that can be either A-Z or 0-9? I'm thinking of using the char value and randomice a number between 48 - 90 and simply drop any value that gets the numbers that represent 58-64. Is this the way to go or is there a better solution?



EDIT 2:




This is my final solution. Thanks for all the help guys!



protected String createRandomRegistryId(String handleId)
{
// syntax we would like to generate is DIA123456-A1B34
String val = "DI";

// char (1), random A-Z
int ranChar = 65 + (new Random()).nextInt(90-65);

char ch = (char)ranChar;
val += ch;

// numbers (6), random 0-9
Random r = new Random();
int numbers = 100000 + (int)(r.nextFloat() * 899900);
val += String.valueOf(numbers);

val += "-";
// char or numbers (5), random 0-9 A-Z

for(int i = 0; i<6;){
int ranAny = 48 + (new Random()).nextInt(90-65);

if(!(57 < ranAny && ranAny<= 65)){
char c = (char)ranAny;
val += c;
i++;
}

}


return val;
}

Answer



Generate a number in the range from 100000 to 999999.



// pseudo code
int n = 100000 + random_float() * 900000;



I’m pretty sure you have already read the documentation for e.g. Random and can figure out the rest yourself.


No comments:

Post a Comment

c++ - Does curly brackets matter for empty constructor?

Those brackets declare an empty, inline constructor. In that case, with them, the constructor does exist, it merely does nothing more than t...