package main
import (
"fmt"
"math/rand"
"strconv"
"strings"
"github.com/ethereum/go-ethereum/common" //以太坊官方程序包,用于将区块哈希值转为对应的整数
)
// 区块哈希值,可以拿任何区块进行验证,区块一经产生无法修改
var blockHash = "0x7ac04fc9c3696f64ec68579af4619b7a1755a2eec08f2d9b6c9e478cf7e26569"
//分别为:ethsc,ethssc,ethk3,ethpc,ethlhc
var lotteryType = "ethsc"
// 主函数
func main() {
blockHashToInt64 := common.HexToHash(blockHash).Big().Int64() // 将区块哈希值转为对应的int64
result := GetResultByLotteryType(blockHashToInt64, lotteryType) // 开奖结果
// 打印开奖结果
fmt.Println(result)
}
func GetResultByLotteryType(blockHashToInt64 int64, lotteryType string) string {
rand.Seed(blockHashToInt64) // 将区块Hash对应的int64设置为随机种子
result := "" // 开奖结果
// 根据哈希整数产生开奖结果
switch lotteryType {
case "ethsc", "以太坊赛车", "hbsc", "火币赛车":
for {
n := (rand.Int() % 10) + 1 //1-10不重复
if !strings.Contains(result, strconv.Itoa(n)+",") {
result = result + strconv.Itoa(n) + ","
}
if strings.Count(result, ",") == 10 { //10个车道
break
}
}
case "ethssc", "以太坊时时彩":
for i := 0; i < 5; i++ { //5个球
n := (rand.Int() % 10) //0-9可重复
result = result + strconv.Itoa(n) + ","
}
case "ethk3", "以太坊快三":
for i := 0; i < 3; i++ { //3个骰子
n := (rand.Int() % 6) + 1 //1-6可重复
result = result + strconv.Itoa(n) + ","
}
case "ethpc", "以太坊PC蛋蛋":
for i := 0; i < 3; i++ { //3个球
n := (rand.Int() % 10) //0-9可重复
result = result + strconv.Itoa(n) + ","
}
case "ethlhc", "以太坊六合彩":
result = "," //防止7,同时匹配7,和17,和27,和37,和47,
for {
n := (rand.Int() % 49) + 1 //1-49不重复
if !strings.Contains(result, ","+strconv.Itoa(n)+",") {
result = result + strconv.Itoa(n) + ","
}
if strings.Count(result, ",") == 8 { //7个球,多加了一个,
result = result[1 : len(result)-1] //去除两个,
return result //直接返回
}
}
}
result = result[0 : len(result)-1]
return result
}