递归火山软件开发平台

标题: 一个数组如何随打乱呢 [打印本页]

作者: 易入门    时间: 2024-4-19 13:52
标题: 一个数组如何随打乱呢
比如 1-5  5个数,如何让他随机 排序呢

作者: 易入门    时间: 2024-4-19 14:26
<火山程序 类型 = "通常" 版本 = 1 />
数组.加入成员 (1)
数组.加入成员 (2)
数组.加入成员 (3)
数组.加入成员 (4)
数组.加入成员 (5)
置随机数种子 ()
计次循环 (数组.取成员数 ())
{
    随机序号 = 取随机数 (1, 数组.取成员数 ())
    索引 = 取循环索引 ()
    暂存 = 数组.取成员 (索引)
    数组.置成员值 (索引, 数组.取成员 (随机序号 - 1))
    数组.置成员值 (随机序号 - 1, 暂存)
}
调试输出 (数组)

作者: 易入门    时间: 2024-4-19 14:26
已解决,抄易代码的
作者: Xelloss0618    时间: 2024-4-19 14:26
<火山程序 类型 = "通常" 版本 = 1 />

方法 打乱数组 <公开 静态 注释 = "随机地打乱基本类型值数组和文本数组类中所有成员的顺序." 注释 = "注: 随机算法为std::mt19937,成员的每个排列都拥有相同的出现概率." 折叠
        @视窗.外部头文件 = "<random>" @嵌入式方法 = "">
参数 欲操作数组 <注释 = "只支持基本类型值数组类和文本数组类" 注释 = "不支持对象数组类、字节集数组类、对象数组模板类" @匹配类型 = 通用类>
{
    @ [](auto& arr) {
    @     auto begin = arr.GetData();
    @     auto end = begin + arr.GetCount();
    @     std::shuffle(begin, end, std::mt19937{std::random_device{}()});
    @ } (@<欲操作数组>.data())
}

作者: 易入门    时间: 2024-4-19 14:39
Xelloss0618 发表于 2024-4-19 14:26
方法 打乱数组
参数 欲操作数组
{

谢谢大佬
作者: 大有可为    时间: 2024-4-19 14:43
Xelloss0618 发表于 2024-4-19 14:26
方法 打乱数组
参数 欲操作数组
{

可以集成piv里面 期待下个版本
作者: weilai    时间: 2024-4-19 16:06
这不用抄易语言的也不用嵌入式,直接火山写也很简单
作者: weilai    时间: 2024-4-19 16:08
循环 取随机数 交换变量  即可




欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/) Powered by Discuz! X3.4