This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public static Integer[] shuffleBySeed(String shuffleSeed) { | |
//将一副新牌映射为1-54的数组 | |
Integer[] newCardsArray = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54}; | |
List<Integer> newCardsList = Arrays.asList(array); | |
//引入自定义种子 | |
SecureRandom random = SecureRandom.getInstance("SHA1PRNG"); | |
random.setSeed(shuffleSeed.getBytes()); | |
//洗牌 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
洗牌随机数生成规则: | |
洗牌随机数由三个玩家的公钥、预言机随机数、牌局id顺序拼接而成,其中玩家的公钥按照玩家进入牌局的顺序进行拼接; | |
将拼接后的字符串转为16进制得到该牌局的洗牌随机数; | |
public static String getRandSeries(String pubKey1, String pubKey2, String pubKey3, String id){ | |
SecureRandom random = new SecureRandom(); | |
String randSeries = byte2HexStr((pubKey1+pubKey2+pubKey3+random.nextInt()+id).getBytes()); | |
return randSeries; | |
} |