技术论坛

 客户提了个“少见”的要求:我的数组元素次序就要随机排列!

返回主题列表
作者 主题
'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
主题:回复:客户提了个“少见”的要求:我的数组元素次序就要随机排列!

牌已有就是有限次的洗牌,两重循环嵌套,根据随机数(不超过数组的上标有下标)交换相应位置

一切皆有可能
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。