Dart 避免在列表中选取相同的随机词,直到列表用尽为止

Dart 避免在列表中选取相同的随机词,直到列表用尽为止,dart,Dart,此函数用于拾取一个随机单词,而不会在一行中重复一个单词两次 我如何改进它,使它在列表用尽之前不会选择相同的单词,也就是说,它遍历了整个列表 animateRandomWords(){ 列出单词=[‘改变者’、‘社区组织者’、‘情人’、‘实干家’、‘推动者’、‘合作者’、‘疯狂者’]; var rnd=新随机数(); 随机词=单词[rnd.nextInt(单词长度)]; 定时器=新定时器。周期性(新持续时间(秒:4),(f){ HtmlElement el; el=$['random-word']

此函数用于拾取一个随机单词,而不会在一行中重复一个单词两次

我如何改进它,使它在列表用尽之前不会选择相同的单词,也就是说,它遍历了整个列表

animateRandomWords(){
列出单词=[‘改变者’、‘社区组织者’、‘情人’、‘实干家’、‘推动者’、‘合作者’、‘疯狂者’];
var rnd=新随机数();
随机词=单词[rnd.nextInt(单词长度)];
定时器=新定时器。周期性(新持续时间(秒:4),(f){
HtmlElement el;
el=$['random-word'];
el.style.opacity='0';
新计时器(新持续时间(毫秒:750),(){
el.style.opacity='1';
var新词;
做{
newWord=words[rnd.nextInt(words.length)];
}while(newWord==randomWord);
随机词=新词;
});
});
}

另一种方法是对单词列表进行洗牌,然后简单地对其进行迭代


实现列表洗牌,虽然我不知道它使用什么算法,但人们希望它是一个很好的实现。

另一种方法是洗牌单词列表,然后简单地迭代它


实现列表洗牌,虽然我不知道它使用什么算法,但人们希望它是一个很好的实现。

另一种方法是洗牌单词列表,然后简单地迭代它


实现列表洗牌,虽然我不知道它使用什么算法,但人们希望它是一个很好的实现。

另一种方法是洗牌单词列表,然后简单地迭代它


实现列表洗牌,虽然我不知道它使用什么算法,但人们希望它是一个很好的实现。

我尝试了其他答案中建议的其他方法,并决定洗牌列表,遍历列表,再次洗牌等等。这已经足够好了,但有一点需要注意:仍然有重复的机会,即当重新洗牌列表中的第一项与先前洗牌列表中的最后一项匹配时。唉,这是一门更高级的学科

animateRandomWords(){
列出单词=[“变革者”、“社区组织者”、“情人”、“实干家”、“推动者和震撼者”,
‘合作者’、‘疯狂者’、‘创造者’、‘建设者’、‘世界改变者’、‘我们’、‘我们与我’;
单词.shuffle(新的Random());
var randomWord=单词[0];//初始随机单词。
var i=1;//因为我们已经使用了第一个单词,所以从第二个开始迭代。
定时器=新定时器。周期性(新持续时间(秒:4),(f){
HtmlElement el;
el=$['random-word'];
el.style.opacity='0';
新计时器(新持续时间(毫秒:750),(){
el.style.opacity='1';
if(i==单词长度){
i=0;
}
随机词=词[i];
印刷(文字);
i++;
});
});
}

我很想学习如何进一步改进/简化这个问题。

我尝试了其他答案中建议的其他方法,并决定对列表进行洗牌、迭代、再次洗牌等等。这已经足够好了,但有一点需要注意:仍然有重复的机会,即当重新洗牌列表中的第一项与先前洗牌列表中的最后一项匹配时。唉,这是一门更高级的学科

animateRandomWords(){
列出单词=[“变革者”、“社区组织者”、“情人”、“实干家”、“推动者和震撼者”,
‘合作者’、‘疯狂者’、‘创造者’、‘建设者’、‘世界改变者’、‘我们’、‘我们与我’;
单词.shuffle(新的Random());
var randomWord=单词[0];//初始随机单词。
var i=1;//因为我们已经使用了第一个单词,所以从第二个开始迭代。
定时器=新定时器。周期性(新持续时间(秒:4),(f){
HtmlElement el;
el=$['random-word'];
el.style.opacity='0';
新计时器(新持续时间(毫秒:750),(){
el.style.opacity='1';
if(i==单词长度){
i=0;
}
随机词=词[i];
印刷(文字);
i++;
});
});
}

我很想学习如何进一步改进/简化这个问题。

我尝试了其他答案中建议的其他方法,并决定对列表进行洗牌、迭代、再次洗牌等等。这已经足够好了,但有一点需要注意:仍然有重复的机会,即当重新洗牌列表中的第一项与先前洗牌列表中的最后一项匹配时。唉,这是一门更高级的学科

animateRandomWords(){
列出单词=[“变革者”、“社区组织者”、“情人”、“实干家”、“推动者和震撼者”,
‘合作者’、‘疯狂者’、‘创造者’、‘建设者’、‘世界改变者’、‘我们’、‘我们与我’;
单词.shuffle(新的Random());
var randomWord=单词[0];//初始随机单词。
var i=1;//因为我们已经使用了第一个单词,所以从第二个开始迭代。
定时器=新定时器。周期性(新持续时间(秒:4),(f){
HtmlElement el;
el=$['random-word'];
el.style.opacity='0';
新计时器(新持续时间(毫秒:750),(){
el.style.opacity='1';
if(i==单词长度){
i=0;
}
随机词=词[i];
印刷(文字);
i++;
});
});
}

我很想学习如何进一步改进/简化这个问题。

我尝试了其他答案中建议的其他方法,并决定对列表进行洗牌、迭代、再次洗牌等等。这已经足够好了,但有一点需要注意:仍然有重复的机会,即当重新洗牌列表中的第一项与先前洗牌列表中的最后一项匹配时。唉,这是一门更高级的学科

animateRandomWords(){
列出单词=['changem