作者 | 主题 |
---|---|
'Razor 至圣 经验值: 20117 发帖数: 2773 精华帖: 23 |
楼主 2019-11-21 00:15:52
主题:客户提了个“少见”的要求:我的数组元素次序就要随机排列! 今天正在骑“码”,客户打来电话,提了个“少见”的要求,说让放在数组内的几百个不同的数据元素成随机排列,不能丢值,不能有重值,问他为什么,他只是说有用,这个客户是个“**湖”,一定要这么整,完全没有打折扣的余地。 那就想想怎么实现吧,想到了先弄两个数组,一个是源数组,一个是数组元素随机排列后的缓存数组,方法有按数组下标遍历读取源数组元素值,放到以随机数为下标的缓存数组中,或者以随机数为下标读取源数组元素值,依次放入缓存数组中,这两种方法貌似都没什么问题哈,然后,写个小样本程序测试一下,效果简直是烂得不能再烂了,有丢值,有重值,客户提的两个指标都被“完美”的干翻了。 使用的通用函数库中的LGF_RandomInt块生成的随机数,不知道是思路有问题还是这个块产生的随机数不适合这里的应用,还是我的使用方法不对,还是客户提的这个要求真的难以实现? 明天接着排”雷“,哪位大师傅给点点拨?
Less is more……
|
企鹅村 侠圣 经验值: 3822 发帖数: 541 精华帖: 0 |
1楼 2019-11-21 08:02:07
主题:回复:客户提了个“少见”的要求:我的数组元素次序就要随机排列! 我认为可以先分组再随机。把重复值筛选出来分好,再补充其他的。
甜甜蜜蜜
|
xxctjd 侠圣 经验值: 4241 发帖数: 583 精华帖: 3 |
2楼 2019-11-21 08:43:05
主题:回复:客户提了个“少见”的要求:我的数组元素次序就要随机排列! 楼主的问题很有意思哦,没有用过Tia环境下的随机数,先找到这些库函数研究下再回复你。 库函数下载地址: https://support.industry.siemens.com/cs/document/109479728/step-7-(tia-portal)-%E5%92%8C-s7-1200-s7-1500-%E7%9A%84%E9%80%9A%E7%94%A8%E5%87%BD%E6%95%B0%E5%BA%93-(lgf)?dti=0&lc=zh-CN |
kibu 侠圣 经验值: 4518 发帖数: 554 精华帖: 4 |
3楼 2019-11-21 08:55:52
主题:回复:客户提了个“少见”的要求:我的数组元素次序就要随机排列! 我个人觉得还是可以这样试试 1 、确定随机数据的最大上下限范围 2、根据范围和数组内数据数量对范围进行分片(比如有数组元素有100个,则分成100片,每片的范围不重复) 3、每个分片内产生一个随机数据(在每片的数据限定范围内),形成一个有规律的从小到大或从大到小的数组(这样就没有重复值了) 4、对规律数组内的数据进行多次随机交换,打乱原数组的排序规律(生成客户需要的随机数组) |
yming 至圣 经验值: 127286 发帖数: 21992 精华帖: 824 |
4楼 2019-11-21 08:58:56
主题:回复:客户提了个“少见”的要求:我的数组元素次序就要随机排列! 没明白楼主的意思。到底想做什么?
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|
我心依旧555 奇侠 经验值: 6644 发帖数: 786 精华帖: 9 |
9楼 2019-11-21 10:28:47
主题:回复:客户提了个“少见”的要求:我的数组元素次序就要随机排列! 牌已有就是有限次的洗牌,两重循环嵌套,根据随机数(不超过数组的上标有下标)交换相应位置
一切皆有可能
|