HarmonyOS 鸿蒙Next 随机数

发布于 1周前 作者 wuwangju 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next 随机数
CryptoArchitectureKit中生成的随机数,是 Uint8Array类型数据表示8位无符号整数的数组。 Math.random() 中生成的是 0 至 1 之间的伪随机数 请问下有APi 类似 OC 中 arc4random() 生成随机数的方法吗?

2 回复

目前能查到的HarmonyOS中使用的随机数生成,安全随机数生成:https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/crypto-generate-random-number-V5,并没有类似arc4random()生成随机数的方法。

当前随机数Random只能指定长度,无法指定范围。

可以将得到的随机数自定义范围,如:

let rand = cryptoFramework.createRandom();

let randData = rand.generateRandomSync(1);

let num:number = randData.data[0] * 100 / 255;

更多关于HarmonyOS 鸿蒙Next 随机数的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS(鸿蒙)系统中生成随机数,你可以利用系统提供的API来实现。鸿蒙系统支持多种随机数生成方式,适用于不同的应用场景和性能需求。

对于生成普通用途的随机数,可以使用SecureRandom类。这个类位于ohos.security.crypto包中,专门用于生成高强度的随机数,适合加密和安全相关的应用。

示例代码如下:

import ohos.security.crypto.SecureRandom;

public class RandomNumberGenerator {
    public static void main(String[] args) {
        try {
            SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
            byte[] randomBytes = new byte[16];
            random.nextBytes(randomBytes);
            
            // 将字节数组转换为整数或其他所需格式
            long randomLong = convertBytesToLong(randomBytes);
            System.out.println("Generated Random Long: " + randomLong);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // 辅助方法,用于将字节数组转换为长整型
    private static long convertBytesToLong(byte[] bytes) {
        long result = 0;
        for (byte b : bytes) {
            result = (result << 8) | (b & 0xFF);
        }
        return result;
    }
}

注意:上述代码示例并非直接适用于鸿蒙系统的Java代码风格,而是展示了使用SecureRandom类生成随机数的基本思路。在鸿蒙系统开发中,你应使用鸿蒙特定的API和编程语言(如ArkUI的JS或eTS)来实现类似功能。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部