大佬教程收集整理的这篇文章主要介绍了如何从 keySet 中提取随机字符串?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在解决一个问题,我需要从 keySet 中提取一个随机字符串。只是想知道是否有人可以在这里给我一些指导。我很迷茫。如果我使用的是 int 而不是 String,我已经找到了很多方法来做到这一点。例如,我想就州及其首都对用户进行测验,并从问题的 keySet 中提取一个随机密钥。 这是套装:
Set<String> states = stateCAPItals.keySet();
Set
不是随机索引的最佳数据结构。
最好转换为 List
并使用随机生成器来选择 index
。如果您确实需要使用 Set
,您可以生成一个随机索引 n
并遍历 Set
,在 nth element
处停止。对于选择多个元素,使用 List
没有任何好处。任何 iterable
都可以。
关键思想是动态调整选择概率,以便您可以选择 m(超出 sizeof(Set)):在最简单的 @H_155_5@m=1 示例中,选择概率为 1/N
的第一个元素,如果您没有选择它,选择 2nd element
的概率为 1/(N-1)
......等等。
使用条件概率显示所有元素都在公平机会1/N
下被选中。
类似于 HashSet 的 keySet 是无序的,因此不能保证集合中元素的顺序。因此,从集合中提取随机字符串可能不是那么有效。
将集合转换为数组或列表,然后执行随机字符串获取可能是一个不错的解决方案。
,ArrayList<States> statesList = new ArrayList<>( states );
State x = statesList.get( (int)(statesList.size() * Math.random()) );
上面的代码会得到你想要的,但如果它是一个非常大的列表,这可能会效率低下。
,String ranKey = map.keySet().toArray()[new Random().nexTint(map.keySet().size())].toString();
,
试试这个代码
onPress: function () {
debugger;
var textArray = ['Pritesh','Nimesh','Harshil','Ravi','Amit','Brijesh'];
var randomnumber = Math.floor(Math.random() * textArray.length);
for (var i = 0; i < textArray.length; i++) {
if (i === randomnumber) {
console.log(textArraY[i]);
}
}
以上是大佬教程为你收集整理的如何从 keySet 中提取随机字符串?全部内容,希望文章能够帮你解决如何从 keySet 中提取随机字符串?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。