生成随机数和随机串

ABAP 函数介绍:生成随机密码 代码首先初始化随机数生成器的种子,然后创建四个随机数生成器,分别用于生成特殊字符、数字、大写字母和小写字母。在循环中,根据随机数选择相应的字符集,并将随机字符添加到密码字符串中。最后,使用转换对象将二进制密码转换为字符串格式。本函数是SDN(SAP Developer Network)社区介绍、由Eddy De Clercq开发的,它提供了一个用于生成随机密码的ABAP函数模块,该模块可以根据导入参数指定的长度生成包含大小写字母和数字的随机密码。输入参数 :20 (要求密码长度为20) 阅读详情

一 实例

    /**
     * 生成随即4位随机数
     */
    public String getRandomNum() {
        return (int) ((Math.random() * 9 + 1) * 1000) + "";
    }

二 生成随机串

/**
 * 根据用户id生成不重复邀请码 小于id 754137930为6位,超出后邀请码位数将大于6
 **/
public class generateCode {
    /** 邀请码最小长度,生成邀请码小于该字段,自动补长  **/
    private static final int MIN_CODE_LENGTH_1 = 10;
    /** 位数不足时,充当分隔,该字段为保持唯一性,不放入下方的列表  **/
    private static final String STOP_CHAR_1 = "0";
    private static final String[] CHARS_1 = new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9"};

    /** 兑换码最小长度,生成邀请码小于该字段,自动补长  **/
    private static final int MIN_CODE_LENGTH_2 = 8;
    /** 位数不足时,充当分隔,该字段为保持唯一性,不放入下方的列表  **/
    private static final String STOP_CHAR_2 = "U";
    private static final String[] CHARS_2 = new String[]{"Q","W","E","8","A","S","2","D","Z","X","9","C","7","P","5","K","3","M","J","F","R","4","V","Y","L","T","N","6","B","G","H"};

    /**
     * 默认使用配置一
     * */
    private static int MIN_CODE_LENGTH = MIN_CODE_LENGTH_1;
    private static String STOP_CHAR = STOP_CHAR_1;
    private static String[] CHARS = CHARS_1;
    private static int OFFSET = CHARS_1.length - 1;

    public generateCode(int type) {
        if (type == 2) {
            // 兑换码
            MIN_CODE_LENGTH = MIN_CODE_LENGTH_2;
            STOP_CHAR = STOP_CHAR_2;
            CHARS = CHARS_2;
            OFFSET = CHARS_2.length - 1;
        }
    }

    /**
     * 根据 id 生成邀请码
     * 如果是 6 位的邀请码只能支持 754137930 7亿5千万用户, 超出的id 会成为7位甚至更长的邀请码
     * @param id 用户id
     * @return 邀请码字符串
     */
    public static String id2ShareCode(long id, Integer codeMinLength) {
        if (codeMinLength == null) {
            codeMinLength = MIN_CODE_LENGTH;
        }
        String code = int2chars(id);
        int tailLength = codeMinLength - code.length();
        if (tailLength > 1) {
            code = code + STOP_CHAR + codeTail(tailLength - 1);
        } else if (tailLength == 1) {
            code = code + STOP_CHAR;
        }
        return code;
    }

    /**
     * 根据 id 生成邀请码
     * 如果是 6 位的邀请码只能支持 754137930 7亿5千万用户, 超出的id 会成为7位甚至更长的邀请码
     * @param id 用户id
     * @return 邀请码字符串
     */
    public String id2ShareCode(long id) {
        int codeMinLength = MIN_CODE_LENGTH;
        String code = int2chars(id);
        int tailLength = codeMinLength - code.length();
        if (tailLength > 1) {
            code = code + STOP_CHAR + codeTail(tailLength - 1);
        } else if (tailLength == 1) {
            code = code + STOP_CHAR;
        }
        return code;
    }

    /**
     * 根据邀请码 获取 id
     * @param code 邀请码
     * @return 用户id
     */
    public static long shareCode2id(String code) {
        int inx = code.indexOf(STOP_CHAR);
        if (inx > 0) {
            code = code.substring(0, inx);
        }
        return chars2int(code);
    }

    /**
     * 获取补长的邀请码(随机)
     * @param len 需要的长度
     * */
    private static String codeTail(int len) {
        String res = "";
        Random r = new Random();
        for (int i = 0; i < len; i++) {
            res += CHARS[r.nextInt(OFFSET)];
        }
        return res;
    }

    private static String int2chars(long id) {
        long x = id / OFFSET;
        long remainder = id % OFFSET;
        if (x == 0) {
            return CHARS[(int) id];
        } else if (x < OFFSET) {
            return CHARS[(int) x] + CHARS[(int) remainder];
        } else {
            return int2chars(x) + CHARS[(int) remainder];
        }
    }

    private static long chars2int(String chars) {
        long res = 0;
        int codeLen = chars.length();
        List<String>  totalCharsList = Arrays.asList(CHARS);

        for (int i = 0; i < codeLen; i++) {
            String a = chars.substring(i, i+1);
            if (STOP_CHAR.equals(a)) {
                break;
            }
            if (totalCharsList.contains(a)) {
//                res += (long) totalCharsList.indexOf(a) * (Math.pow(OFFSET, (codeLen - i - 1)));
                res = res * OFFSET + totalCharsList.indexOf(a);
            } else {
                res = 0;
                break;
            }
        }
        return res;
    }
}

二 生成随机串的问题

        由于STOP_CHAR为静态变量,初始值为STOP_CHAR_1 = "0",但是在满足type=2的时候STOP_CHAR 重新被赋值为STOP_CHAR_2="U",此时如果再使用不满足type=2的条件的时候,按常理来说STOP_CHAR的值应该为STOP_CHAR_1 = "0",两次使用同一个对象的时候,此时的STOP_CHAR值仍然为STOP_CHAR_2="U"。

        部分修改


    private static int MIN_CODE_LENGTH = 0;
    private static String STOP_CHAR = "";
    private static String[] CHARS = ""
    private static int OFFSET = "";

    public generateCode(int type) {
        if (type == 1) {
            // 7位字符串
            MIN_CODE_LENGTH = MIN_CODE_LENGTH_1;
            STOP_CHAR = STOP_CHAR_1;
            CHARS = CHARS_1;
            OFFSET = CHARS_1.length - 1;
        }
        if (type == 2) {
            // 兑换码
            MIN_CODE_LENGTH = MIN_CODE_LENGTH_2;
            STOP_CHAR = STOP_CHAR_2;
            CHARS = CHARS_2;
            OFFSET = CHARS_2.length - 1;
        } 
    }

        或者

    private static int MIN_CODE_LENGTH = 0;
    private static String STOP_CHAR = "";
    private static String[] CHARS = ""
    private static int OFFSET = "";

    
    public generateCode() {
            // 7位字符串
            MIN_CODE_LENGTH = MIN_CODE_LENGTH_1;
            STOP_CHAR = STOP_CHAR_1;
            CHARS = CHARS_1;
            OFFSET = CHARS_1.length - 1;
        }

    public generateCode(int type) {
            // 兑换码
            MIN_CODE_LENGTH = MIN_CODE_LENGTH_2;
            STOP_CHAR = STOP_CHAR_2;
            CHARS = CHARS_2;
            OFFSET = CHARS_2.length - 1;
    }

        待后续一一分析,如有问题,希望读者留言告知,谢谢!

c++生成任意区间的随机整数和随机整数序列 本博客展示了两个函数: (1)RandomCreatFunc()函数,生成任意区间的随机数,包括负数区间; (2)RandomArray()函数,生成1-N的随机序列; 阅读详情

相关推荐

MySQL、Oracle 生成随机ID、随机数、随机字符串

MySQL、Oracle 生成随机ID、随机数、随机字符串

weixin_42307069的博客 8644

随机字符串工具类RandomStringUtils详解

random(int length):生成一个指定长度的随机字符串,包含大小写字母和数字。 * randomAlphanumeric(int length):生成一个指定长度的随机字母和数字的组合字符串。 * randomAscii(int length):生成一个指定长度的随机ASCII字符串,包含从32到126的字符。 * random(int length, String chars):生成一个指定长度的随机字符串,包含指定的字符集中的字符。

技术人集结地 1万+

Zemax光学设计——单透镜设计

(1)在镜头数据编辑器中面2那一栏中的“曲率半径”栏右侧的方格中单击,弹出“在面2上的曲率解”对话框(2)将对话框中的求解类型设为“F数”(3)将“F/#”设置为10设置完成后,其中的一些数据会发生变化在初始结构中,透镜的曲率半径和厚度未知,,这些参数需要软件自动优化得到,但可以使用透镜后表面上边缘厚度解得到近轴焦平面的位置在透镜后表面的厚度上单击鼠标右键,选择边缘光线求解类型,它表示近轴边缘光线会自动在下一个表面上聚焦并确定距离值。

yangSHU21的博客 2万+

(一)JAVA生成随机数工具类RandomStringUtils详解

public static String random(int count, boolean letters, boolean numbers) /** * count 创建一个随机字符串,其长度是指定的字符数,字符将从参数的字母数字字符集中选择,如参数所示。 * letters true,生成的字符串可以包括字母字符

OceanSky的专栏 7万+

不会ps,你也可以成为ps高手,最强傻瓜式人像一键磨皮美白瘦脸美妆PS插件

比如:美肤是用来去斑点的,如果效果不太理想,就加大百分比,反之就减小。瘦脸如果脸胖的就打开,正常的就关闭。所谓的一键调节,要不只能调节一种效果,要不就是个预设,然后让你自己再调。同时,该软件还加入了贴心的批量处理功能,能同时处理上千张照片,让您喝着茶也能将工作做完。、自动检测照片中的人脸,包括鼻子,嘴巴,耳朵,眼睛和眉毛。、依托强大的脸部识别功能,可以高效的对人物全身皮肤进行智能识别,处理,使肤质平滑、过渡均匀。,这是网上下载的模糊照片,经过简单处理,你可以发现,眼睛变的更亮,皮肤更白,眼袋消失。

心语家园 - www.xinyucn.cc 2897

LeGo-LOAM源码篇:源码分析(3)

mapOptmization.cpp,主要内容包括回环检测、scan-to-map位姿优化、因子图。

slamml 1382

随机字符串(Python)

随机字符串(Python) 输入两个整数,以它们的和为随机数种子,并在 32-127 之间(含)随机产生 20 个整数。‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬ 以这些数字为 Unicode 码产生字符,并将组成字符串输出。

2301_79497461的博客 454

【OpenClaw 实战】Ubuntu 双机 Gateway + Node 部署全流程 + 所有常见坑(2026版)

如果你只是需要浏览器自动化、截屏、简单系统查询 →Node 模式够用,别折腾 exec。如果你需要 GOLD 运行任意 shell 命令、git、npm、自定义脚本 →必须升级成 Gateway。bind lan + pairing approve + token 统一。后续想玩多 Agent 团队,优先考虑双/多 Gateway + 聊天通道互发(社区已有不少成功案例)。欢迎评论区留言你的环境和报错,一起交流!

hampeter的博客 1547

生成随机字符串(三种方式)

生成随机字符串(三种方式) 一、org.apache.commons.lang包下有一个RandomStringUtils类,其中有一个randomAlphanumeric(int length)函数,可以随机生成一个长度为length的字符串。 String filename=RandomStringUtils.randomAlphanumeric(10); 二、可以指定某个位置是a-z、A-Z或是0-9,需要导入的包是import java.util.Random; //可以指定字符串的某个位置

woodking 1万+

从官方例程到实战:AXI Memory Mapped To PCIe 核在FPGA-RC模式下的配置与调试全解析

本文详细解析了AXI Memory Mapped To PCIe核在FPGA-RC模式下的配置与调试方法。从IP核基础结构到实战参数设置,再到例程代码剖析和调试技巧,全面覆盖了AXI与PCIe协议转换的关键技术点,帮助开发者高效实现FPGA与PCIe设备的高速数据交互。

weixin_42550597的博客 267

初学者入门机器学习 (ML)的推荐教程

了解基本的机器学习概念并不难。有大量免费的在线博客文章、视频和编码教程可以引导您了解基础知识——从介绍性内容到常见应用程序,再到算法和应用技能。这篇文章总结了一些用于介绍 ML 的最佳免费选项。它按逻辑顺序排列,每个概念都建立在上一个概念的基础上。

u010542847的博客 4616

随机字符串生成(可用于生成账号密码等)

随机字符串生成工具

感谢阅读 3446

ros入门(八)---TF坐标转换

TF(TransForm),就是坐标转换,包括了位置和姿态两个方面的变换。

weixin_51157015的博客 3388

Java 格式转换:利用格式转换实现随机数生成随机 char 字母及 string 字母串_java实现随机数怎样和对应字符串相对应

我们都知道在 Java 语言中有八种基本数据类型,而不同数据类型之间的转换你了解多少呢?今天我们通过本文带你了解利用格式转换实现 char 和 String 产生随机的小写字母及字母串的原理。关于 Java 中产生随机数字的方法可以看我之前的帖子Java 中产生随机数的方法。

2401_87022413的博客 540

开源的预测气象大模型与数据获取/可视化

「开源气象大模型与数据获取指南」摘要: 当前主流AI气象模型(如ECMWF的AIFS、DeepMind的GraphCast、华为Pangu等)主要基于ERA5/HRES数据训练。开源资源可通过ECMWF OpenData、GitHub仓库及Google Cloud获取,其中AIFS数据采用CCBY-4.0许可可商用,其他模型多有限制性许可。典型应用流程包括:1)通过Python包获取实时预报数据;2)加载预训练权重进行推理;3)使用xarray/cartopy或Zarr进行可视化。训练数据可从CDS下载ER

专注AI大模型,软件混淆,授权 793

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

Ruby生成随机字符串

在做自动化时有时常用到生成随机数、随机姓名称,这里分享两种,其他类型的随机串稍作改动就可以 1、有数字组成 def newpass(len) newpass = "" 1.upto(len){ |i| newpass << rand(10).to_s} return newpass end #生成20位由数字组成的字符串 puts newpass(20) 2、由字母数字组成

测试码农的专栏 1577

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

随机生成字母串

随机生成字母串 //生成随机字符串 String s = UUID.randomUUID().toString().replaceAll("-", ""); //生成指定长度的字符串 public static String getRandomString(int length) { //length表示生成字符串的长度,可自行设置 String str = "ABCD...

冰镇苹果的博客 603

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

快速生成随机数、随机字符串、随机验证码

Linux随机数、Linux随机字符串、Linux随机验证码

m0_61066945的博客 1274

Hutool实战:高效生成随机数与随机字符串的多种方法

本文详细介绍了Hutool工具库在生成随机数与随机字符串方面的多种高效方法。通过对比原生Java实现,展示了Hutool的RandomUtil工具类在简化代码、提升性能方面的优势,涵盖基础用法、高级技巧以及验证码系统设计等实战案例,帮助开发者快速应对各种随机生成需求。

weixin_33700350的博客 383

js和php能生成一样的随机数_生成PHP随机数的几种方法

下面这种方式是我经常使用的,比较人性化废话不多,直接上码/*** 生成随机字符串* @param int $length 要生成的随机字符串长度* @param string $type 随机码类型:0,数字+大写字母;1,数字;2,小写字母;3,大写字母;4,特殊字符;-1,数字+大小写字母+特殊字符* @return string*/function randCode...

weixin_35651102的博客 169

js获取任意长度随机串(字母+数字)

【代码】js获取任意长度随机串(字母+数字)

钥_life的博客 332

Linux Shell 生成随机数和随机字符串

原创 Linux Shell 生成随机数和随机字符串 ...

weixin_45595816的博客 430

python生成随机数、随机字符、随机字符串

python生成随机数、随机字符、随机字符串 本文是基于Windows 10系统环境,实现python生成随机数、随机字符、随机字符串: Windows 10 PyCharm 2018.3.5 for Windows (exe) python 3.6.8 Windows x86 executable installer (1) 生成随机数 随机整数 import random...

哈工大许政的博客 5万+

C++产生随机数,随机序列和随机分布

1.产生[0 N-1]区间的一个随机整数 2.产生一个[0 1]区间的随机小数 3.产生一个[0 N-1]区间的随机序列 4.产生服从某个分布的概率随机数 1.产生[0 N-1]区间的一个随机整数 #include <iostream> #include<stdlib.h> using namespace std; int main() { srand((int)ti...

qq_34122731的博客 3358

python 生成随机矩阵和随机数

【注】:洗牌等知识点未发表,可查看文末相关链接。 生成随机矩阵 用numpy包实现 生成随机整数矩阵 numpy.random.randint(low[,high,size]) 值范围位于半区间[low,high)中 其他函数 np.random.rand(size) 返回[0, 1)之间的随机浮点数矩阵。size为int型。 np.random.randn(size)返回符合正态分布的矩阵...

weixin_36369564的博客 1万+

随机数与随机种子

对随机数的使用较少,因此没有深入了解过其产生原理。这里涉及到两个函数,rand()和srand(),前者是生成一个伪随机数,后者是生成一个随机种子。 一、rand() rand()可以生成一个0~RAND_MAX之间的一个随机数,返回值是一个unsigned int类型值。如下代码: #include #include #include using namesp

芳草源的博客 3万+
上一篇: yarn : 无法加载文件 C:\Users\*\AppData\Roaming\npm\yarn.ps1
下一篇: JsonProperty.Access.READ_ONLY 导致查询字段为null
至学者
博客等级 码龄9年 180粉丝 773原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值