Questions tagged «permutation»

排列是将对象按特定顺序排列。


9
随机播放DataFrame行
我有以下DataFrame: Col1 Col2 Col3 Type 0 1 2 3 1 1 4 5 6 1 ... 20 7 8 9 2 21 10 11 12 2 ... 45 13 14 15 3 46 16 17 18 3 ... 从csv文件读取DataFrame。所有具有Type1的行都在最上面,然后是具有Type2 的行,然后是具有Type3 的行,依此类推。 我想重新整理DataFrame行的顺序,以便将所有行Type混合在一起。可能的结果可能是: Col1 Col2 Col3 Type 0 7 8 9 …

8
java.util.Random真的那么随机吗?我该如何生成52!(部分)可能的顺序?
我一直在Random (java.util.Random)洗牌52张牌。有52个!(8.0658175e + 67)的可能性。但是,我发现for的种子java.util.Random是a long,其值小得多,为2 ^ 64(1.8446744e + 19)。 从这里开始,我怀疑是否java.util.Random 真的那么随机;它真的有能力产生全部52个!可能性? 如果没有,我怎么能可靠地产生一个可以产生全部52个更好的随机序列!可能性?

28
列出字符串/整数的所有排列
对采访进行编程的一个常见任务(尽管不是我的采访经验)是获取一个字符串或整数并列出所有可能的排列。 是否有一个示例,说明了如何完成此操作以及解决此问题的逻辑? 我已经看到了一些代码片段,但是它们没有得到很好的注释/解释,因此很难遵循。

30
JavaScript中的排列?
我正在尝试编写一个执行以下操作的函数: 将整数数组作为参数(例如[1,2,3,4]) 创建所有[1,2,3,4]可能排列的数组,每个排列的长度为4 下面的函数(我在网上找到了它)通过将字符串作为参数并返回该字符串的所有排列来实现 我无法弄清楚如何对其进行修改以使其能够与整数数组一起使用,(我认为这与某些方法在字符串上的处理方式与在整数上的处理方式不同有关,但是我不确定。 ..) var permArr = [], usedChars = []; function permute(input) { var i, ch, chars = input.split(""); for (i = 0; i < chars.length; i++) { ch = chars.splice(i, 1); usedChars.push(ch); if (chars.length == 0) permArr[permArr.length] = usedChars.join(""); permute(chars.join("")); chars.splice(i, 0, ch); usedChars.pop(); } return …

30
生成列表的所有可能排列的算法?
说我有n个元素的列表,我知道有n个!订购这些元素的可能方法。生成此列表所有可能排序的算法是什么?例如,我有列表[a,b,c]。该算法将返回[[a,b,c],[a,c,b,],[b,a,c],[b,c,a],[c,a,b],[c,b , 一个]]。 我在这里阅读 http://en.wikipedia.org/wiki/Permutation#Algorithms_to_generate_permutations 但是维基百科从来都不擅长于解释。我不太了解。

12
快速排列->数字->排列映射算法
我有n个元素。举个例子,假设有7个元素1234567。我知道有7个!=这7个元素的5040个排列可能。 我想要一个包含两个功能的快速算法: f(number)将0到5039之间的数字映射到唯一排列,并且 f'(排列)将排列映射回生成它的编号。 我不关心数字和排列之间的对应关系,只要每个排列都有自己的唯一编号即可。 因此,例如,我可能有一些功能 f(0) = '1234567' f'('1234567') = 0 想到的最快的算法是枚举所有排列并在两个方向上创建一个查找表,以便一旦创建表,f(0)将为O(1),f('1234567')将为a在字符串上查找。但是,这会占用大量内存,尤其是当n变大时。 谁能提出另一种可以快速运行且没有内存不足的算法?

5
std :: next_permutation实现说明
我很好奇如何std:next_permutation实现,所以我提取了gnu libstdc++ 4.7版本并清理了标识符和格式以产生以下演示... #include <vector> #include <iostream> #include <algorithm> using namespace std; template<typename It> bool next_permutation(It begin, It end) { if (begin == end) return false; It i = begin; ++i; if (i == end) return false; i = end; --i; while (true) { It j = i; --i; if …

8
如何将数据帧按行和按列随机化(或置换)?
我有一个这样的数据框(df1)。 f1 f2 f3 f4 f5 d1 1 0 1 1 1 d2 1 0 0 1 0 d3 0 0 0 1 1 d4 0 1 0 0 1 d1 ... d4列是行名,f1 ... f5行是列名。 为了做sample(df1),我得到一个新的数据帧,其计数与df1相同,为1。因此,在整个数据帧中保留1的计数,但在每一行或每一列中均保留1。 是否可以按行或按列进行随机化? 我想为每列随机分配df1,即每列1的数量保持不变。并且每列至少需要更改一次。例如,我可能会有这样的随机df2 :(请注意,每列1的计数保持不变,但每行1的计数却不同。 f1 f2 f3 f4 f5 d1 1 0 0 0 1 …
96 r  random  permutation 

24
在python中查找给定字符串的所有可能排列
我有一个字符串。我想通过更改字符串中的字符顺序来生成该字符串的所有排列。例如,说: x='stack' 我想要的是这样的清单, l=['stack','satck','sackt'.......] 目前,我正在迭代字符串的列表强制转换,随机选择2个字母并将它们换位以形成新的字符串,然后将其添加到设置的l强制转换中。根据字符串的长度,我正在计算可能的排列数量,并继续迭代直到集合大小达到极限。必须有更好的方法来做到这一点。

6
通过重复生成排列
我知道itertools,但似乎只能生成排列而不能重复。 例如,我想为2个骰子生成所有可能的骰子骰。所以我需要大小为2的[1、2、3、4、5、6]的所有排列,包括重复:(1、1),(1、2),(2、1)...等等 如果可能的话,我不想从头开始实现

4
随机播放vs置换numpy
numpy.random.shuffle(x)和之间有什么区别numpy.random.permutation(x)? 我已经阅读了文档页面,但是当我只想随机地对数组元素进行随机排列时,我不明白两者之间是否有任何区别。 确切地说,假设我有一个数组x=[1,4,2,8]。 如果我想生成x的随机排列,那么shuffle(x)和之间有什么区别permutation(x)?

19
具有唯一值的排列
itertools.permutations会根据其位置而不是其值来生成其元素被视为唯一的元素。所以基本上我想避免重复: >>> list(itertools.permutations([1, 1, 1])) [(1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1), (1, 1, 1)] 之后的过滤是不可能的,因为在我的情况下,排列的数量太大。 有人知道合适的算法吗? 非常感谢你! 编辑: 我基本上想要的是以下内容: x = itertools.product((0, 1, 'x'), repeat=X) x = sorted(x, key=functools.partial(count_elements, elem='x')) 这是不可能的,因为sorted创建列表并且itertools.product的输出太大。 抱歉,我应该已经描述了实际问题。

5
如何在C ++中使用STL在低于总长度的位数下创建排列
我有一个c++ vector与std::pair<unsigned long, unsigned long>对象。我正在尝试使用生成矢量对象的排列std::next_permutation()。但是,我希望排列具有给定的大小,类似于permutationspython中指定了预期返回排列的大小的函数。 基本上,c++相当于 import itertools list = [1,2,3,4,5,6,7] for permutation in itertools.permutations(list, 3): print(permutation) Python演示 (1, 2, 3) (1, 2, 4) (1, 2, 5) (1, 2, 6) (1, 2, 7) (1, 3, 2) (1, 3, 4) .. (7, 5, 4) (7, 5, 6) (7, 6, 1) (7, …

4
使用R来解决Lucky 26游戏
我正试图向我的儿子展示如何使用编码来解决游戏带来的问题,以及如何让R处理大数据。有问题的游戏称为“幸运26”。在此游戏中,数字(1-12,无重复)位于大卫之星的12个点(6个顶点,6个交点)上,并且6行4个数字必须全部加为26。在大约4.79亿可能性中(12P12 )显然有144个解决方案。我试图按照以下方式在R中对此进行编码,但内存似乎是一个问题。如果成员有时间,我将不胜感激任何建议以提高答案。预先感谢成员。 library(gtools) x=c() elements <- 12 for (i in 1:elements) { x[i]<-i } soln=c() y<-permutations(n=elements,r=elements,v=x) j<-nrow(y) for (i in 1:j) { L1 <- y[i,1] + y[i,3] + y[i,6] + y[i,8] L2 <- y[i,1] + y[i,4] + y[i,7] + y[i,11] L3 <- y[i,8] + y[i,9] + y[i,10] + y[i,11] L4 …
15 r  bigdata  permutation 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.