一个真随机的抽奖程序

快过年了,各公司年会在即。作为年会抽奖程序的开发人员,你是否担心自己写的算法到时候抽中的是自己,怕有理说不清?作为老板你是否想要抽奖公平,杜绝作弊?

那么你需要:https://github.com/wengchaoxi/go-lottery

概述

go-lottery 通过对所有参与者的唯一标识符进行哈希计算,并与一个不可预测、公开可查的事件(比如 BTC 未来某个时间点的区块信息的 Hash)的哈希值进行对比,来确定哪个参与者的哈希值与之最接近,从而确定中奖者。

优势:

  • 真正的随机:中奖结果与一个不可预测的事件(比如 BTC 未来某个时间点的区块信息的 Hash)绑定。

  • 公开可验证:由于随机事件(比如 BTC 未来某个时间点的区块信息的 Hash)是公开可查的,结果的公正性可以被公众监督和验证。

使用

package main

import "github.com/wengchaoxi/go-lottery/lottery"

func main() {
	lot := lottery.NewLottery()

	timeStr := "2024/01/01-00:00:00"
	randomEvent := lottery.BTCBlockInfo(timeStr, "2006/01/02-15:04:05")
	lot.SetRandomEvent(randomEvent)

	participants := []string{"Alice", "Bob", "Charlie", "Dave"}
	lot.Run(participants)
	lot.PrintWinner()
}
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值