楼主: eliza943
3304 7

[问答] 在R中生成随机排列的问题 [推广有奖]

  • 0关注
  • 0粉丝

高中生

0%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
703 点
帖子
24
精华
0
在线时间
12 小时
注册时间
2012-2-15
最后登录
2014-1-8

楼主
eliza943 发表于 2012-12-10 22:12:25 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
生成1到n的一个随机排列。非常感谢能过来看看的人!
一下程序都没搞懂,也是错的<(=┳_┳=)>...
n=10
sample(1:n)
k=n
if(k>1)
repeat
{
u=runif(1)
I=floor(k*u)+1
k=k-1
I=k
}
p

####没有搞懂!!!
n=10
p=c(sample(1:n))
p
p[1]
k=n
if(k>1)
repeat
{
u=runif(1)
i=floor(k*u)+1
a=p[k]                 ###这里我本来打算赋值交换i,k位置上的值的,但是长度什么,又出问题了……
p[k]=p[i]
p[i]=a
k=k-1
}
p

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:repeat Sample floor AMPL 非常感谢 repeat 程序

沙发
qoiqpwqr 发表于 2012-12-11 03:29:41
你的程序本来是想干嘛的?

藤椅
eliza943 发表于 2012-12-11 13:42:13
qoiqpwqr 发表于 2012-12-11 03:29
你的程序本来是想干嘛的?
生成一个1到n的随机排列,且n!个排列是等概率取到的

板凳
qoiqpwqr 发表于 2012-12-11 14:51:19
eliza943 发表于 2012-12-11 13:42
生成一个1到n的随机排列,且n!个排列是等概率取到的
直接
sample(1:24)

报纸
eliza943 发表于 2012-12-11 18:36:38
qoiqpwqr 发表于 2012-12-11 14:51
直接
sample(1:24)
书上写的步骤就是上面的样子,我不知道怎么回事……说是先有初始排序,然后从下标1——n中国任选一个,把这个位置上的数和位置n-1上的交换,以此类推…………

地板
jmpamao 发表于 2012-12-11 21:14:58
你的意思 是随机一个位置的数 和 (n-1)位置的数 进行交换吗?
并且递推n-1次,

不看你后面的说明,还真不明白题目什么意思

n=10
p=sample(1:n)  #初始排列
p
k=n

  repeat
  {
    u=runif(1)     # u  0~1
    I=floor(k*u)+1    # I 随机的数
    t1 <- p[I]
    t2 <- p[k-1]
    p[k-1] =t1         # I位置的数 变为 n-1位置的数
    p[I] =t2             # n-1位置的数 变为 I位置的数
    k=k-1               
    if(k<=1) break       #循环 以此类推 n-1次
  }
p

你看看行不行?

7
jmpamao 发表于 2012-12-11 21:26:05
或者 这样 更能理解这个程序的目的
n=10
p=1:n #初始排列
p
k=n

  repeat
  {
    u=runif(1)     # u  0~1
    I=floor(k*u)+1    # I 随机的数
    t1 <- p[I]
    t2 <- p[k-1]
    p[k-1] =t1         # I位置的数 变为 n-1位置的数
    p[I] =t2             # n-1位置的数 变为 I位置的数
    k=k-1               
    if(k<=1) break       #循环 以此类推 n-1次
  }
p


前面的 sample(...)会干扰解释 呵呵
已有 1 人评分热心指数 收起 理由
eliza943 + 1 谢谢解答

总评分: 热心指数 + 1   查看全部评分

8
eliza943 发表于 2012-12-12 13:24:19
jmpamao 发表于 2012-12-11 21:26
或者 这样 更能理解这个程序的目的
n=10
p=1:n #初始排列
非常感谢你!

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-4 09:18