免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
123下一页
最近访问板块 发新帖
查看: 4193 | 回复: 20
打印 上一主题 下一主题

随机条件 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-21 19:50 |只看该作者 |倒序浏览
for (1..1000){
open AOUT,">a$_.txt" || die "Can't open the file!";
open BOUT,">b$_.txt" || die "Can't open the file!";
open IN,"<data.txt" || die "Can't open the file!";
while (<IN> {
/^\d+\s(\d+)\s(\d+)/;
my $temp=int((2/5+(rand($1)/$1)/5)*$1);
my $temp2=int((2/5+(rand($2)/$2)/5)*$2);
printf AOUT "%d %d %d\n",$_,$temp,$temp2;
printf BOUT "%d %d %d\n",$_,$1-$temp,$2-$temp2;
}
close IN;
close AOUT;
close BOUT;
}
这个是随机1000次产生的程序,对第2列和第3列分别随机在原始数据范围的0.4-0.6之间,那如果我想加个限制条件,就是随机得到第2列与第3列的 比值的绝对值要小于0.03的才输出,否则继续随机直到条件满足,对产生的两个文件都做这样的条件,我自己写了,可是一直不对,希望帮忙,谢谢!!

论坛徽章:
0
2 [报告]
发表于 2010-11-21 20:02 |只看该作者
楼主我建议你找本书系统地学习一下

论坛徽章:
0
3 [报告]
发表于 2010-11-21 20:04 |只看该作者
回复 2# rpbear


    因为本人不是学习计算机的,但是有些地方要用到,又赶时间,只能问些白痴问题了~~

论坛徽章:
0
4 [报告]
发表于 2010-11-21 20:17 |只看该作者
其实脚本的书看起来很快的,而且我觉得对你肯定会有用。既然你现在会用到,很可能以后还会用到,这样就不用每次都问啦多好呵呵回复 3# susie_gan

论坛徽章:
0
5 [报告]
发表于 2010-11-21 20:23 |只看该作者
本帖最后由 susie_gan 于 2010-11-21 20:24 编辑

回复 4# rpbear


    #!/bin/perl

for (1..1000){
open AOUT,">a$_.txt" || die "Can't open the file!";
open BOUT,">b$-.txt" || die "Can't open the file!";
open IN,"<data.txt" || die "Can't open the file!";
while (<IN> {
  /^\d+(\d+)\s+(\d+)/;
  #if($1==0){
          # next;
          #}
        do{
   my $temp=int((2/5+(rand($1)/$1)/5)*$1);
   my $temp2=int((2/5+(rand($2)/$2)/5)*$2);
   printf AOUT "%d %d %d\n",$_,$temp,$temp2;
   printf BOUT "%d %d %d\n",$_,$1-$temp,$2-$temp2;
   }
    until($temp/$temp2-(($1-$temp)/($2-$temp2)<0.03 || ($1-$temp)/($2-$temp2)-$temp/$temp2<0.03);
close IN;
close AOUT;
close BOUT;
}
呵呵,但是现在还没有买书,而且我现在就在调试,等着用,这是我改写的,要不你帮我 看看怎么改吧?提示说编辑错误,也不知道哪里有问题

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
6 [报告]
发表于 2010-11-21 20:31 |只看该作者
不懂perl
以下是不是你想要的?

  1. #!/bin/perl

  2. for (1..1000){
  3.         open AOUT,">a$_.txt" || die "Can't open the file:$!";
  4.         open BOUT,">b$-.txt" || die "Can't open the file:$!";
  5.         open IN,"<data.txt" || die "Can't open the file:$!";
  6.         while (<IN>) {
  7.                 /^\d+(\d+)\s+(\d+)/;
  8. #if($1==0){
  9. # next;
  10. #}
  11.                 do{
  12.                         my $temp=int((2/5+(rand($1)/$1)/5)*$1);
  13.                         my $temp2=int((2/5+(rand($2)/$2)/5)*$2);
  14.                         printf AOUT "%d %d %d\n",$_,$temp,$temp2;
  15.                         printf BOUT "%d %d %d\n",$_,$1-$temp,$2-$temp2;
  16.                 }
  17.                 until($temp/$temp2-(($1-$temp)/($2-$temp2)<0.03 || ($1-$temp)/($2-$temp2)-$temp/$temp2<0.03));
  18.                                 close IN;
  19.                                 close AOUT;
  20.                                 close BOUT;
  21.                                 }
  22.                                 }


复制代码

论坛徽章:
3
2015年迎新春徽章
日期:2015-03-04 09:56:11数据库技术版块每日发帖之星
日期:2016-08-03 06:20:00数据库技术版块每日发帖之星
日期:2016-08-04 06:20:00
7 [报告]
发表于 2010-11-21 20:33 |只看该作者
运行了一下,生成了好多空白的axxx.txt...

论坛徽章:
0
8 [报告]
发表于 2010-11-21 20:39 |只看该作者
perl是什么?

论坛徽章:
0
9 [报告]
发表于 2010-11-21 20:49 |只看该作者
这个。。perl我也不会。。。帮不上阿

论坛徽章:
0
10 [报告]
发表于 2010-11-21 20:52 |只看该作者
回复 6# cjaizss


    这个和我原来写的好像没有什么区别吧?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP