设为首页收藏本站同能贴吧 切换语言 繁体中文
开启辅助访问 切换到窄版
返回列表
+ 发新帖
查看: 448|回复: 0

[转载发布] Array#shuffle! #shuffle #samples (优化)

[复制链接]
累计送礼:
0 个
累计收礼:
1 个
  • TA的每日心情
    开心
    3 天前
  • 签到天数: 221 天

    连续签到: 1 天

    [LV.7]常住居民III

    9100

    主题

    890

    回帖

    7万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    VIP
    7
    卡币
    64872
    OK点
    16
    推广点
    0
    同能卷
    50
    积分
    74892

    灌水之王

    发表于 2024-4-20 02:17:41 | 显示全部楼层 |阅读模式
    RUBY 代码

    \s又是一年……,想起也在论坛发帖问过Array#sample\s

    使用 Fisher-Yates 算法(几十年前的……,也是目前网上搜索最常见的洗牌算法)
    随机则是参照C语言的rand()函数写的,使用该方法的数组大小不能超过0x7FFF

    Array#shuffle!  => array_obj
    Array#shuffle   => array_obj
    Array#sample  => array_element_obj
    Array#samples => array_obj

    该帖方法效率基本为RUBY的同名或类似方法的十分之一 (RMVA测试)
    由于是调用win32api的CallWidnowProc实现(最简单的code测试 8.5-8.6W次/秒……),较小运算量比不过ruby方法直接执行,运算量大的情况RMXP基本用不到……

    优化:
    ①参数的改变,看起来更直接( 使用obj;原来obj.object_id。参数实质没变,效率我是感觉没差)
    ②优化了Array#samples,原先并没有用好result的内存……


    关于效率测试,具体次数与电脑性能相关(my_**方法为该帖的方法)

    RUBY 代码



                 本帖来自P1论坛作者RPGzh500223,因Project1站服务器在国外有时候访问缓慢不方便作者交流学习,经联系P1站长fux2同意署名转载一起分享游戏制作经验,共同为国内独立游戏作者共同创造良好交流环境,原文地址:https://rpg.blue/forum.php?mod=viewthread&tid=488426  若有侵权,发帖作者可联系底部站长QQ在线咨询功能删除,谢谢。

    帖子地址: 

    天天去同能,天天有童年!
    回复 送礼论坛版权

    使用道具 举报

    文明发言,和谐互动
    文明发言,和谐互动
    高级模式
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    简体中文
    繁體中文
    English(英语)
    日本語(日语)
    Deutsch(德语)
    Русский язык(俄语)
    بالعربية(阿拉伯语)
    Türkçe(土耳其语)
    Português(葡萄牙语)
    ภาษาไทย(泰国语)
    한어(朝鲜语/韩语)
    Français(法语)
    关闭

    幸运抽奖

    社区每日抽奖来袭,快来试试你是欧皇还是非酋~

    立即查看

    聊天机器人
    Loading...

    QQ|Archiver|手机版|小黑屋|同能RPG制作大师 ( 沪ICP备12027754号-3 )

    GMT+8, 2026-10-20 02:37 , Processed in 0.085651 second(s), 55 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表