网页
资讯
视频
图片
知道
文库
贴吧
地图
采购
进入贴吧
全吧搜索
吧内搜索
搜贴
搜人
进吧
搜标签
日
一
二
三
四
五
六
签到排名:今日本吧第
个签到,
本吧因你更精彩,明天继续来努力!
本吧签到人数:0
一键签到
可签
7
级以上的吧
50
个
一键签到
本月漏签
0
次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行
补签
。
连续签到:
天 累计签到:
天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月30日
漏签
0
天
魔兽地图编辑器吧
关注:
65,685
贴子:
3,845,820
看贴
图片
吧主推荐
视频
玩乐
1
2
下一页
尾页
26
回复贴,共
2
页
,跳到
页
确定
<返回魔兽地图编...吧
>0< 加载中...
[算法]不重复随机数的生成算法合集
只看楼主
收藏
回复
BISZHANG
揉脸党
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
RPG地图往往需要大量的随机数来增加游戏的娱乐性,而我也知道吧内并不是所有人都有编程基础,在这里列出几个好的随机算法思路大概会对吧友们有帮助吧。
送TA礼物
IP属地:广东
来自
Android客户端
1楼
2019-02-22 11:45
回复
LveYYnDD
地理学者
11
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
顶
IP属地:上海
2楼
2019-02-22 11:46
回复
收起回复
2026-01-30 07:38:49
广告
不感兴趣
开通SVIP免广告
BISZHANG
揉脸党
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
目录
1.调换法——大小范围通用
2.随机排序法——同上
3.对称法——大范围最好
4.排序删除法——超大范围不重复字符串
5.格子放置法——小范围选取
6.二进制法——小范围选取不定量
7.羊圈法——通用
8.叠加法——通用
9.人品人品法 ——适合选两个
名字乱起的。
IP属地:广东
来自
Android客户端
3楼
2019-02-22 11:48
回复
收起回复
BISZHANG
揉脸党
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
随机排序法
思路和调换法差不多。
只是这次我们不再抽取,而是将数组打乱,然后直接选取数组中的012三个单元作为抽取结果。
思路大概是:
循环整数A 0到4
random=随机整数 从循环整数A 到5
设置x=unit[循环整数A]
unit[循环整数A]=unit[random]
unit[random]=x
(这里做一个数值交换)
循环end
结果为unit[0]到unit[2]
推荐程度:⭐⭐⭐⭐⭐
代码复杂程度:⭐⭐⭐
算法通用程度:⭐⭐⭐⭐⭐
IP属地:广东
来自
Android客户端
5楼
2019-02-22 11:59
回复
收起回复
BISZHANG
揉脸党
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
对称法
超简单。就是把n个元素绑定到一起。比如说6个抽2个。0和5绑一起 1和4绑一起 2和3绑一起,那样只需要抽一次,也就无需考虑它重不重复了。优点就是代码简单,缺点是随机结果比较的单一,组合固定。
推荐程度:⭐⭐
代码复杂程度:⭐
算法通用程度:⭐⭐⭐
IP属地:广东
来自
Android客户端
6楼
2019-02-22 12:04
回复
收起回复
BISZHANG
揉脸党
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
排序删除法
主要用于生成大量等长随机字符串,且不重复。需要用到字符串排序算法(我不知道we有没有,反正java是有的)
我们就以字符串来说吧。首先设定一个数组,内含你所需要生成的字符。比如arry[0]=a arry[1]=b等等,我们这里就只生成小写字母,所以数组长度是26,最大值是25。
假如要生成100条长度为10的随机字符串。
每一条的生成都将是一个循化。
循环 0到9
随机整数random=从0到25的一随机数。
result=字符串连接(result+arry[random])
循环end
我们要100条数据,就将上述算法循化个105次,获得了一个长度为105的字符串数组result(为什么是105次呢,因为这其中有可能会有重复的,我们需要去掉其中一些。)
如何去掉?这里要用到字符串排序。
何谓字符串排序?首先大家需要明白字符串比较的原理:就是将字符串按字符一个个比较,比较其ASCII码,不懂没关系,只要知道a最小,z最大就完了。比如两串字符串sccccccccc和zxxxxxxx,谁更大?结果是后者大。算法会从第一个字符开始比较,如果字母不相同,就会输出结果,至于后面是什么它压根不管,否则的话才会比较后一位。也就是说,字符串再长是没有用的,字母大才是关键。
明白了之后,我们就需要知道字符串排序方法了——将字符串逐个比较,将小字符串放在数组的前端,将大字符串放在数组的后端。举个例子就是axx baa bab bab....zzz
是的,大家会发现运气不好的时候,字符串是会出现重复的,概率十分小,但是就是有会出现。怎么办,这时候把这个result数组前后比较,0和1比 1和2比一直比到103-104。
如果不相等就不管,相等,就把后一个删除,将后面的所有元素挪前一位,不要觉得这样很蠢,当数据量巨大(100w条以上)的时候这个方法是很快的,时间复杂度是n。
最后剩余的可能会是103、104条那样(事实上基本不会出现删除)取前100条就好了。
推荐程度:⭐⭐
代码复杂程度:⭐⭐⭐⭐⭐
算法通用程度:⭐⭐
IP属地:广东
来自
Android客户端
7楼
2019-02-22 12:37
回复
收起回复
BISZHANG
揉脸党
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
哼╭(╯^╰)╮没人看我就不写吗,想得美,我就要写,写死你们
IP属地:广东
来自
Android客户端
8楼
2019-02-22 12:39
回复
收起回复
段Sha
创世帝
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
哦
来自
Android客户端
9楼
2019-02-22 12:45
回复
收起回复
2026-01-30 07:32:49
广告
不感兴趣
开通SVIP免广告
ck5524209
果照队长
10
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
太麻烦 不如indexer系统
10楼
2019-02-22 12:46
回复(1)
收起回复
BISZHANG
揉脸党
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
格子放置法
5选3,除了预设随机单位数组unit以外,还需要预设一个结果数组result,长度和随机单位数组一样,这里是5。
我们想象result数组是一排格子。我们随机出来一个数,就把结果往格子里面放。万一重复了,那么就往格子后面移,就是+1再求余,直到后面有位置给它放为止。很简单对吧。
推荐程度:⭐⭐⭐⭐
代码复杂程度:⭐⭐
算法通用程度:⭐⭐⭐⭐
IP属地:广东
来自
Android客户端
11楼
2019-02-22 12:48
回复
收起回复
BISZHANG
揉脸党
4
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
休息一下 ,妈的,累死了。30楼都到不了发话后面的咕咕了。
IP属地:广东
来自
Android客户端
12楼
2019-02-22 12:52
回复
收起回复
空腹不能吃饭啊
精咽糊脸
13
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
??????
IP属地:广东
来自
Android客户端
14楼
2019-02-22 13:09
回复(1)
收起回复
巨神之剑_lc
创世帝
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
帮顶~~
IP属地:湖南
15楼
2019-02-22 13:26
回复
收起回复
RPG大师兄
创世帝
9
该楼层疑似违规已被系统折叠
隐藏此楼
查看此楼
好麻烦,魔兽自带的够了。。反正真随机也不好玩。
IP属地:广西
来自
Android客户端
16楼
2019-02-22 21:19
回复
收起回复
登录百度账号
扫二维码下载贴吧客户端
下载贴吧APP
看高清直播、视频!
贴吧热议榜
1
爆!Bin哥与高层吵架离队出走
2719800
2
官媒怒批牢A:地图炮打过头了
2649324
3
够飒!AI女团跨界维修通马桶
2099804
4
续面遭耍诈?老板嘴臭搞歧视
2015064
5
琉华患HIV,大鹅魔改石头门
1856452
6
老美出行新招:头顶护照防ICE
1595425
7
谋财还要命?终末地肝到住院
1124112
8
鸭科夫登顶!国游年度五强决出
836050
9
惊天翻盘,WBG2-1二擒JDG
593890
10
清华教授神侃:情场女投资>男
554736
贴吧页面意见反馈
违规贴吧举报反馈通道
贴吧违规信息处理公示