[Add] new random strategy

This commit is contained in:
2023-08-12 14:23:19 +07:00
parent 207702da23
commit e3f89245f6
6 changed files with 44 additions and 4 deletions
@@ -0,0 +1,30 @@
package dev.miti99.lotterygenerator.mega;
import dev.miti99.lotterygenerator.LotteryGenerator;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.ThreadLocalRandom;
import java.util.stream.Collectors;
public class TopMatchedNumberGenerator implements LotteryGenerator {
@Override
public Set<Integer> generateNumbers(int numNumber) {
Map<Integer, Integer> matchedNumbers = new HashMap<>();
while (true) {
var number = ThreadLocalRandom.current().nextInt(1, 56);
matchedNumbers.merge(number, 1, Integer::sum);
if (matchedNumbers.get(number) == 1_000_000_000) {
break;
}
}
var sortedMatchedNumbers = new TreeMap<Integer, Integer>();
matchedNumbers.forEach((key, value) -> sortedMatchedNumbers.put(value, key));
return sortedMatchedNumbers.descendingMap().entrySet().stream().limit(numNumber)
.map(Entry::getValue)
.collect(Collectors.toSet());
}
}
@@ -14,7 +14,6 @@ class Mega645GeneratorTest {
assertEquals(6, numbers.size());
for (int number : numbers) {
assertTrue(number >= 1 && number <= 45);
assertEquals(numbers.indexOf(number), numbers.lastIndexOf(number));
}
}
}
@@ -14,7 +14,6 @@ class Mega655GeneratorTest {
assertEquals(6, numbers.size());
for (int number : numbers) {
assertTrue(number >= 1 && number <= 55);
assertEquals(numbers.indexOf(number), numbers.lastIndexOf(number));
}
}
}
@@ -0,0 +1,14 @@
package dev.miti99.lotterygenerator.mega;
import org.junit.jupiter.api.Test;
class TopMatchedNumberGeneratorTest {
@Test
void generateNumbers() {
var generator = new TopMatchedNumberGenerator();
var numbers = generator.generateNumbers(7);
System.out.println(numbers);
}
}
@@ -15,7 +15,6 @@ class ReversedMega645GeneratorTest {
assertEquals(7, numbers.size());
for (int number : numbers) {
assertTrue(number >= 1 && number <= 45);
assertEquals(numbers.indexOf(number), numbers.lastIndexOf(number));
}
}
}
@@ -15,7 +15,6 @@ class ReversedMega655GeneratorTest {
assertEquals(7, numbers.size());
for (int number : numbers) {
assertTrue(number >= 1 && number <= 55);
assertEquals(numbers.indexOf(number), numbers.lastIndexOf(number));
}
}
}