223baa60ba
- 在N个道具中,提取所有M个道具的组合方案,这种方式可以用在 权重一样的 N个道具中选择一定的数量的道具组合(这种方案就是权重一样)
- 在N个道具中,提取超过一定价值V的所有组合方案,道具的数量没有限制,但是必须超过最低价值,也就是我们说的保底方案
- 在N个道具中,提取超过一定价值VMin,但是不超过一定价值VMax的组合方案,道具的数量没有限制,必须在最低价值和最高价值之间.
- 在N个道具中,提取超过一定价值V并且个数大小为M的所有组合方案,这个就是保证 保底的一定数量的道具
类似上面的方案,在游戏中可以在活动创建的时候,初始化所有的方案放到redis,然后每一次抽取都筛选下标来确认方案.这样就可以保证在一定的范围或者数量内确认对应的方案。
129 lines
2.1 KiB
Go
129 lines
2.1 KiB
Go
/*
|
||
* @Author : huangzj
|
||
* @Time : 2020/7/20 10:27
|
||
* @Description:
|
||
*/
|
||
|
||
package deepSearchTest
|
||
|
||
import (
|
||
"Go-Tool/util/deepSearch"
|
||
"fmt"
|
||
"testing"
|
||
)
|
||
|
||
func TestOriginDeepSearch(t *testing.T) {
|
||
srv := deepSearch.NewDeepSearch()
|
||
itemGroup := srv.GetItemMatchNum([]deepSearch.ItemValue{
|
||
{
|
||
ItemId: 1,
|
||
ItemValue: 1,
|
||
}, {
|
||
ItemId: 2,
|
||
ItemValue: 2,
|
||
}, {
|
||
ItemId: 3,
|
||
ItemValue: 3,
|
||
}, {
|
||
ItemId: 4,
|
||
ItemValue: 4,
|
||
}, {
|
||
ItemId: 5,
|
||
ItemValue: 5,
|
||
},
|
||
}, 6)
|
||
|
||
for _, r := range itemGroup {
|
||
fmt.Println()
|
||
for _, row := range r {
|
||
fmt.Println(fmt.Sprintf("{%d %d}", row.ItemId, row.ItemValue))
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestDeepSearch(t *testing.T) {
|
||
srv := deepSearch.NewDeepSearch()
|
||
itemGroup := srv.GetItemMatchValue([]deepSearch.ItemValue{
|
||
{
|
||
ItemId: 1,
|
||
ItemValue: 1,
|
||
}, {
|
||
ItemId: 2,
|
||
ItemValue: 2,
|
||
}, {
|
||
ItemId: 3,
|
||
ItemValue: 3,
|
||
}, {
|
||
ItemId: 4,
|
||
ItemValue: 4,
|
||
}, {
|
||
ItemId: 5,
|
||
ItemValue: 5,
|
||
},
|
||
}, 5)
|
||
|
||
for _, r := range itemGroup {
|
||
fmt.Println()
|
||
for _, row := range r {
|
||
fmt.Println(fmt.Sprintf("{%d %d}", row.ItemId, row.ItemValue))
|
||
}
|
||
}
|
||
}
|
||
|
||
func TestDeepSearchLimitNum(t *testing.T) {
|
||
srv := deepSearch.NewDeepSearch()
|
||
itemGroup := srv.GetItemMatchValueLimitNum([]deepSearch.ItemValue{
|
||
{
|
||
ItemId: 1,
|
||
ItemValue: 1,
|
||
}, {
|
||
ItemId: 2,
|
||
ItemValue: 2,
|
||
}, {
|
||
ItemId: 3,
|
||
ItemValue: 3,
|
||
}, {
|
||
ItemId: 4,
|
||
ItemValue: 4,
|
||
}, {
|
||
ItemId: 5,
|
||
ItemValue: 5,
|
||
},
|
||
}, 5, 4)
|
||
|
||
for _, r := range itemGroup {
|
||
fmt.Println()
|
||
for _, row := range r {
|
||
fmt.Println(fmt.Sprintf("{%d %d}", row.ItemId, row.ItemValue))
|
||
}
|
||
}
|
||
}
|
||
func TestDeepSearchInSection(t *testing.T) {
|
||
srv := deepSearch.NewDeepSearch()
|
||
itemGroup := srv.GetItemMatchValueInSection([]deepSearch.ItemValue{
|
||
{
|
||
ItemId: 1,
|
||
ItemValue: 1,
|
||
}, {
|
||
ItemId: 2,
|
||
ItemValue: 2,
|
||
}, {
|
||
ItemId: 3,
|
||
ItemValue: 3,
|
||
}, {
|
||
ItemId: 4,
|
||
ItemValue: 4,
|
||
}, {
|
||
ItemId: 5,
|
||
ItemValue: 5,
|
||
},
|
||
}, 5, 6)
|
||
|
||
for _, r := range itemGroup {
|
||
fmt.Println()
|
||
for _, row := range r {
|
||
fmt.Println(fmt.Sprintf("{%d %d}", row.ItemId, row.ItemValue))
|
||
}
|
||
}
|
||
}
|