numpy.random.shuffle(x)和numpy.random.permutation(x)什么numpy.random.permutation(x) ? 我已经阅读了文档页面,但我不明白两者之间是否有任何区别,我只是想随机洗牌数组的元素。 更确切地说,假设我有一个数组x=[1,4,2,8] 。 如果我想生成x的随机排列,那么shuffle(x)和permutation(x)之间的区别是什么?
我有两个不同形状的numpy数组,但长度相同(前导维数)。 我想把它们中的每一个都洗牌,以使相应的元素继续相应 – 即与它们的主要指数相一致地洗牌。 这个代码的作品,并说明了我的目标: def shuffle_in_unison(a, b): assert len(a) == len(b) shuffled_a = numpy.empty(a.shape, dtype=a.dtype) shuffled_b = numpy.empty(b.shape, dtype=b.dtype) permutation = numpy.random.permutation(len(a)) for old_index, new_index in enumerate(permutation): shuffled_a[new_index] = a[old_index] shuffled_b[new_index] = b[old_index] return shuffled_a, shuffled_b 例如: >>> a = numpy.asarray([[1, 1], [2, 2], [3, 3]]) >>> b = numpy.asarray([1, 2, 3]) >>> shuffle_in_unison(a, […]
我想有我的数组项目炒。 像这样的东西: [1,2,3,4].scramble => [2,1,3,4] [1,2,3,4].scramble => [3,1,2,4] [1,2,3,4].scramble => [4,2,3,1] 随机地等等
我用他的JavaScript代码帮助某人,我的眼睛被一个看起来像这样的部分抓住: function randOrd(){ return (Math.round(Math.random())-0.5); } coords.sort(randOrd); alert(coords); 我的第一个虽然是: 嘿,这不可能工作! 但后来我做了一些实验,发现至less似乎提供了很好的随机结果。 然后,我做了一些networkingsearch,几乎在顶部find了一个文件,从这个代码是最ceartanly复制。 看起来像一个相当可敬的网站和作者… 但我的直觉告诉我,这一定是错的。 特别是由于ECMA标准没有规定sortingalgorithm。 我认为不同的sortingalgorithm会导致不同的非均匀混洗。 一些sortingalgorithm可能甚至无限循环… 但你觉得呢? 另外还有一个问题,我现在怎么去衡量这个混洗技术的结果是多么的随意? 更新:我做了一些测量,并发布了下面的结果作为答案之一。
我最近发现自己需要确定我的名单不合适。 Hibernate很好,可以按照完美的顺序返回它。 愚蠢的冬眠,没有读我的脑海。 我看着我的Java API,它告诉我它的洗牌方法是这样的: 随机地使用默认的随机源对指定的列表进行排列。 作为我的好奇乔治,我想知道这究竟是什么意思。 我可以学习这个math课程吗? 我可以看到代码吗? Java,你在做什么我的ArrayList?!?!? 更具体地说,这里使用了哪些math概念?
我有一个数组像: var names: String = [ "Peter", "Steve", "Max", "Sandra", "Roman", "Julia" ] 我想从该数组中获得3个随机元素。 我来自C#,但迅速,我不确定从哪里开始。 我想我应该洗牌arrays,然后从中select前3个项目,例如? 我试图用下面的扩展名来洗牌: extension Array { mutating func shuffle() { for _ in 0..<10 { sort { (_,_) in arc4random() < arc4random() } } } } 但是它在“shuffle()”的位置上表示“'()”不能转换为“[Int]”。 为了挑选我使用的一些元素: var randomPicks = names[0..<4]; 目前看起来不错。 如何洗牌? 还是有没有人有一个更好/更优雅的解决scheme呢?
这是一个我想在甲板洗牌程序中使用的Fisher-Yates的C实现。 我正确地做这个(n =数组的长度)? 注意:do-while循环尝试纠正模偏移(参见这里 )。 它为程序增加了一些开销,如果你不关心低位偏差,可以将其消除。 void shuffle(int *array, int n) { int i, j, tmp, upper_bound; srand(time(NULL)); for (i = n – 1; i > 0; i–) { upper_bound = RAND_MAX – ((RAND_MAX % (i + 1)) + 1); do { j = rand() % (i + 1); } while (j > upper_bound); tmp […]
着名的Fisher-Yates shufflealgorithm可以用来随机排列长度为N的数组A: For k = 1 to N Pick a random integer j from k to N Swap A[k] and A[j] 我一再被告知一个常见的错误是: For k = 1 to N Pick a random integer j from 1 to N Swap A[k] and A[j] 也就是说,不是选取一个从k到N的随机整数,而是从1到N中选取一个随机整数。 如果你犯了这个错误会怎么样? 我知道由此产生的排列不是均匀分布的,但是我不知道什么样的结果会是什么保证。 特别是,有没有人有一个概率分布在元素的最终位置的expression?
我正在为一个列出一副纸牌内容的项目写一个代码,询问这个人想要洗牌多less次,然后洗牌。 它必须使用一个方法来使用System.Random类创build两个随机整数。 这些是我的课程: Program.cs中: namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Deck mydeck = new Deck(); foreach (Card c in mydeck.Cards) { Console.WriteLine(c); } Console.WriteLine("How Many Times Do You Want To Shuffle?"); } } } Deck.cs: namespace ConsoleApplication1 { class Deck { Card[] cards = new Card[52]; string[] numbers = new […]
我在Coding Horror上看了一篇关于各种shufflealgorithm的文章 。 我看到有人在这个地方打乱了一个清单: var r = new Random(); var shuffled = ordered.OrderBy(x => r.Next()); 这是一个很好的洗牌algorithm吗? 它是如何工作的? 这是一个可以接受的方式吗?