免费注册 查看新帖 |

Chinaunix

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

用perl编写的openkero怎么随机读取数组中的一个数 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-04-10 11:24 |只看该作者 |倒序浏览
本帖最后由 kingmaki 于 2014-04-10 17:43 编辑

其实我不懂perl,但是openkero用perl写的,我要写几个简单的巨集,如何读取这个数组,这格式我尝试了三种方式,都不对

      $numn = @rand(0, 99)
      $onename = 姬,酉,祁,己,滕,箴,任,荀

      $masterName1 = [$onename]
      $name1 = @eval("$masterName1" . "$numn". "$masterName1")

      $masterName2 =  @rand([$onename])
      $name2 = @eval("$masterName2" . "$numn". "$masterName2")

      $masterName3 =  @rand([$masterName1])
      $name3 = @eval("$masterName3" . "$numn". "$masterName3")

比如说随机数是23
    $name1  显示的值就是 姬23姬; 总是数组中第一个汉字,我想要得到数组中随机的汉字
    $name2  显示的值就是 0230;
    $name3  显示的值就是 23;

我想要的是数组里面汉字随机显示,可以显示成

祁23祁,或者
任19任

怎么改,或者有什么函数可以改,求教

论坛徽章:
8
技术图书徽章
日期:2013-09-30 08:51:28技术图书徽章
日期:2013-12-11 09:26:39白羊座
日期:2013-12-27 15:27:13金牛座
日期:2014-01-06 09:13:05天蝎座
日期:2014-01-21 14:23:28酉鸡
日期:2014-05-09 16:51:12卯兔
日期:2014-08-11 16:49:1515-16赛季CBA联赛之八一
日期:2017-08-14 23:24:57
2 [报告]
发表于 2014-04-10 12:31 |只看该作者
本帖最后由 xiumu2280 于 2014-04-10 12:42 编辑
  1. #!/usr/bin/perl
  2. use strict;
  3. use warnings;
  4. use Data::Dumper;
  5. use File::Basename;



  6. my $numn = int rand(99);

  7. my @onename = ("姬","酉","祁","己","滕","箴","任","荀");
  8. my $onenum = (int rand (scalar @onename))-1;


  9. my $masterName1 = $onename[$onenum];
  10. my $name1 = ("$masterName1" . "$numn". "$masterName1");
  11. #
  12. my $masterName2 =  $onenum;
  13. my $name2 = ("$masterName2" . "$numn". "$masterName2");
  14. #
  15. my $masterName3 =  $numn;
  16. my $name3 = ("$masterName3" . "$numn". "$masterName3");

  17. print "$name1\n$name2\n$name3\n";
复制代码
百度了一下openkero 是游戏外挂?

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
3 [报告]
发表于 2014-04-10 13:33 |只看该作者
随机获取数组中的元素

use List::Util qw(shuffle);

my @array = (1 .. 100);
for (1 .. 100) {
   say shuffle(@array);
}

论坛徽章:
0
4 [报告]
发表于 2014-04-10 17:39 |只看该作者
本帖最后由 kingmaki 于 2014-04-10 20:35 编辑
xiumu2280 发表于 2014-04-10 12:31
百度了一下openkero 是游戏外挂?


my $onenum = (int rand (scalar @onename))-1;

这一句话,不知道怎么转换过去,,,郁闷呀

对,确实是外挂

      $onenum = @rand(0, 7)
      $i = 1
      $onename = 姬,酉,祁,己,滕,箴,任,荀
      $itemname = [$onename]
      while ($itemname != "") as loop
      $itemname = [$onename]
      if ( $i >= $onenum ) goto RE
      $i++
      end loop

      $masterName1 = [$itemname]

目前用这种笨办法,也能读出来,不过 读取速度太慢,这八个汉字还好,如果是一百个汉字,随机数在后面的话,要跑五六分钟
Openkero好像不能直接支持 $onename[$onenum] 这种格式,$onenum出来的直接就是数字,不是数组中的第几个数

scalar好像也不支持.准确讲不知道用什么格式转换成能支持的形式

还是非常感谢你

论坛徽章:
0
5 [报告]
发表于 2014-04-10 17:40 |只看该作者
kingmaki 发表于 2014-04-10 17:39
my $onenum = (int rand (scalar @onename))-1;

这一句话,不知道怎么转换过去,,,郁闷呀


这更加不知道怎么转换了,3Q

论坛徽章:
0
6 [报告]
发表于 2014-04-10 21:17 |只看该作者
104359176 发表于 2014-04-10 13:33
随机获取数组中的元素

use List::Util qw(shuffle);


这个更加不知道怎么改。

求职 : 软件工程师
论坛徽章:
3
程序设计版块每日发帖之星
日期:2015-10-07 06:20:00程序设计版块每日发帖之星
日期:2015-12-13 06:20:00程序设计版块每日发帖之星
日期:2016-05-05 06:20:00
7 [报告]
发表于 2014-04-11 07:57 |只看该作者
回复 6# kingmaki


    你提供的代碼似乎不是正确的 Perl 代码。你以前学过什么语言,就用那种语言把你想要的写出来,也许我能明白你想要什么。

论坛徽章:
26
2015亚冠之胡齐斯坦钢铁
日期:2015-06-25 21:40:202015亚冠之柏斯波利斯
日期:2015-08-31 17:03:192015亚冠之柏斯波利斯
日期:2015-11-07 13:10:00程序设计版块每日发帖之星
日期:2015-11-10 06:20:00每日论坛发贴之星
日期:2015-11-10 06:20:00程序设计版块每日发帖之星
日期:2015-11-26 06:20:00程序设计版块每日发帖之星
日期:2015-12-02 06:20:00黄金圣斗士
日期:2015-12-07 17:57:4615-16赛季CBA联赛之天津
日期:2015-12-23 18:34:14程序设计版块每日发帖之星
日期:2016-01-02 06:20:00程序设计版块每日发帖之星
日期:2016-01-06 06:20:00每日论坛发贴之星
日期:2016-01-06 06:20:00
8 [报告]
发表于 2014-04-11 20:23 |只看该作者
$numn = @rand(0, 99)
as loop
end loop
什么语言

论坛徽章:
0
9 [报告]
发表于 2014-11-12 16:33 |只看该作者
  1. #!/usr/bin/perl

  2. use List::Util qw(shuffle);

  3. my @ips = ("1.2.3.4","5.6.7.8","0.2.5.3","5.6.54.2");
  4. print "ips::@ips\n";

  5. my $ip = shuffle(@ips);
  6. print "EEEE:::$ip\n";
复制代码
这样就可以随机输出数组里的元素了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP