前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >手机号码生成器的实现过程

手机号码生成器的实现过程

原创
作者头像
用户9828134
发布2022-06-15 01:50:08
1.2K0
发布2022-06-15 01:50:08
举报

手机号码是有11位数字组成,因此在生成手机号码以前咱们先来看一看怎样经过函数生成字符串。如果你看不懂下面的代码,那么你在电脑浏览器上搜索一下,海豚号码生成器,有现成的,直接使用,简单方便。

------------------------------------

代码语言:javascript
复制
DELIMITER $$
CREATE FUNCTION rand_num(n int) RETURNS VARCHAR(255)
BEGIN
    DECLARE chars_str varchar(20) DEFAULT '0123456789';
    DECLARE return_str varchar(255) DEFAULT '';
    DECLARE i INT DEFAULT 0;
    WHILE i < n DO
        SET return_str = concat(return_str,substring(chars_str , FLOOR(1 + RAND()*10 ),1));
        SET i = i +1;
    END WHILE;
    RETURN return_str;
END $$
DELIMITER ;

MySQL的随机函数rand()返回的是一个float类型的数字n,n的取值范围是0<=n<1。值得注意的是能取到0可是不能取到1。数组

显然上面的rand()*10+1的取值范围为[1,11),能取到1可是不能取到11,内置函数floor的做用是向下取整。因此floor(rand()*10+1)的取值范围为[1,10]。函数

由于MySQL中没有内置数组,因此咱们用字符串来模拟,首先来看内置函数substring(str,x,y)是表示在字符串str中从x位置开始,截取长度为y的字符串。X从1开始。测试

内置函数concat(str1,str2,…strn)的做用是把字符串str1到strn拼接成一个字符串。因此上面的函数不难理解。就是每次循环从’0123456789’这10个数字中随机截取一个数字拼接在咱们要返回的字符串中。参数n表示拼接字符串的长度。

代码语言:javascript
复制
import random

list_1 = ["134", "135", "136", "137", "138", "139", "147", "150", "151", "152", "157", "158", "159", "172", "178",
          "182", "183", "184", "187", "188", "198"]  # 中国移动号码段

list_2 = ["130", "131", "132", "145", "155", "156", "166", "171", "175", "176", "185", "186"]  # 中国联通号码段

list_3 = ["133", "149", "153", "173", "177", "180", "181", "189", "191", "199", "193"]  # 中国电信号码段

num = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]  # 存放0-9数字,号码的4-11位从这里取

phone_all = list()  # 存放全部生成的电话号码
phone_output = list() # 存放去重后的电话号码


def create_phone(count, choice): # 参数1为生成号码的个数,参数2为运营商选择
    for t in range(count):
        phone = random.choice(choice) + "".join(random.choice(num) for i in range(8))  #使用random函数生成电话号码
        if phone not in phone_all:  # 判断该电话号码是否是出现过
            phone_output.append(phone)  # 没出现则放到phone_output
        phone_all.append(phone) # 把生成的每一个号码都存起来,用去去重比对
    print(phone_output)  # 打印去重后的电话


if __name__ == '__main__':
    create_phone(10, list_3)

import java.util.Random;

/** * Created by Administrator on 2017/5/25. *

/ public class Test

{ public static void main(String[] args)

{ for (int i = 0; i < 9; i++)

{//9表明循环九次,产生九个随机号码 String number = "139";

//定义电话号码以139开头 Random random = new Random()

;//定义random,产生随机数 f

or (int j = 0; j < 8; j++)

{ //生成0~9 随机数 number += random.nextInt(9); }

System.out.println(number);//输出一个电话号码 }

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档