游戏蛮牛学习群(纯技术交流,不闲聊):959392658
游戏蛮牛 手机端
开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

问答求助

关注:565

当前位置:游戏蛮牛 技术专区 问答求助

_____________________________________________________________________________________________________________
问答求助版块规则:

  1、问题尽量描述清楚
      2、代码要放在代码块里
      3、附件最好放到云盘,然后把链接放到TXT文档里,上传TXT文档。【最好没有附件,你懂得】
      4、本版块回复不得无意义,如:顶、呵呵、不错......以及擦边!【真的会扣分的哦】严重者,封IP!
      5、问题得到解决,请选择最佳答案。
      6、若问题是你自己解决了,可以联系管理员,返还蛮牛币,写下你的答案,另有蛮牛币奖赏。
_____________________________________________________________________________________________________________
查看: 983|回复: 11

[技术讨论] 怎么用递归的方式在0-20之内一次性随机抽取三个不重复的数字啊?

[复制链接]  [移动端链接]
6蛮牛粉丝
1493/1500
排名
1650
昨日变化
8

21

主题

188

帖子

1493

积分

Rank: 6Rank: 6Rank: 6

UID
164326
好友
1
蛮牛币
3227
威望
0
注册时间
2016-8-26
在线时间
526 小时
最后登录
2018-12-10
发表于 2018-4-9 18:02:48 | 显示全部楼层 |阅读模式
15蛮牛币
怎么用递归的方式在0-20之内一次性随机抽取三个不重复的数字?

回复

使用道具 举报

7日久生情
3423/5000
排名
357
昨日变化
2

19

主题

137

帖子

3423

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
42609
好友
9
蛮牛币
6620
威望
0
注册时间
2014-8-29
在线时间
1545 小时
最后登录
2018-12-11
发表于 2018-4-9 18:02:49 | 显示全部楼层
[C#] 纯文本查看 复制代码
using UnityEngine;
using System.Collections;
using System.Collections.Generic;

public class Test20180409 : MonoBehaviour
{
    public List<int> testList = new List<int>();
    public int randomCount;//随机了多少次才取到  不重复的随机结果
    // Use this for initialization
    void Start()
    {

    }

    /// <summary>获取 N 个不重复的随机数
    /// </summary>
    /// <param name="listResult">用来装随机结果的List数组</param>
    /// <param name="min">最小随机数</param>
    /// <param name="max">最大随机数</param>
    /// <param name="count">需要随机多少个不重复的数</param>
    /// <returns></returns>
    List<int> GetRandomNumber(List<int> listResult, int min, int max, int count)
    {
        if ((max - min) <= count)
        {
            Debug.LogError("错误,传入的值可能导致死循环! 比如:想从 0-3 里面取5个不重复的随机数整数,根本不可能!");
            return listResult;
        }
        if (listResult.Count == count) return listResult;

        if (listResult != null)
        {
            int randomNum = UnityEngine.Random.Range(min, max);
            if (listResult.Contains(randomNum) == false)
            {
                listResult.Add(randomNum);
            }
            randomCount++;
        }

        if (listResult.Count < count)
        {
            return GetRandomNumber(listResult, min, max, count);
        }

        return listResult;
    }

    void OnGUI()
    {
        GUI.skin.button.fontSize = 32;
        if (GUILayout.Button("测试取不重复的随机数"))
        {
            Debug.Log("测试");
            randomCount = 0;
            testList.Clear();//初始化清空
            GetRandomNumber(testList, 0, 20, 3);//从0-20 抽取3个不重复的随机数
        }
    }
}


回复

使用道具 举报

排名
506
昨日变化
2

234

主题

1万

帖子

1万

积分

Rank: 12Rank: 12Rank: 12

UID
78862
好友
16
蛮牛币
29140
威望
0
注册时间
2015-3-11
在线时间
3042 小时
最后登录
2018-12-11
QQ
发表于 2018-4-10 09:09:04 来自Mobile--- | 显示全部楼层
目测一楼可以拉

回复

使用道具 举报

6蛮牛粉丝
1493/1500
排名
1650
昨日变化
8

21

主题

188

帖子

1493

积分

Rank: 6Rank: 6Rank: 6

UID
164326
好友
1
蛮牛币
3227
威望
0
注册时间
2016-8-26
在线时间
526 小时
最后登录
2018-12-10
 楼主| 发表于 2018-4-10 09:45:52 | 显示全部楼层
StarrySky 发表于 2018-4-9 22:09
[mw_shl_code=csharp,true]using UnityEngine;
using System.Collections;
using System.Collections.Gener ...

谢谢老哥

回复

使用道具 举报

6蛮牛粉丝
1493/1500
排名
1650
昨日变化
8

21

主题

188

帖子

1493

积分

Rank: 6Rank: 6Rank: 6

UID
164326
好友
1
蛮牛币
3227
威望
0
注册时间
2016-8-26
在线时间
526 小时
最后登录
2018-12-10
 楼主| 发表于 2018-4-10 09:56:26 | 显示全部楼层
lilexy 发表于 2018-4-10 09:09
目测一楼可以拉

嗯嗯 可以的 谢谢老哥查看

回复

使用道具 举报

6蛮牛粉丝
1016/1500
排名
3836
昨日变化
11

5

主题

283

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
234410
好友
2
蛮牛币
934
威望
0
注册时间
2017-7-26
在线时间
338 小时
最后登录
2018-12-11
发表于 2018-4-10 10:13:03 | 显示全部楼层
本帖最后由 随幻Kaller 于 2018-4-10 10:17 编辑

其实吧 这种问题只要实现了 不一定要递归啊(即便它很容易实现)。。。。但是还是给你一个例子
[C#] 纯文本查看 复制代码
List<int> list = new List<int>();
public void GetRecursion(int min, int max, int num)
    {
        int rand = Random.Range(min, max);
        if (list.Contains(rand))
        {
            GetRecursion(min, max, num);
        }
        else
        {
            if (list.Count < num)
            {
                list.Add(rand);
                GetRecursion(min, max, num);
            }
        }

    }
//Test:
Start()
{
        GetRecursion(0, 20, 3);

        foreach (var item in list)
        {
            Debug.Log("::::" + item);
        }
}

回复

使用道具 举报

排名
752
昨日变化
1

17

主题

1152

帖子

3342

积分

Rank: 9Rank: 9Rank: 9

UID
68430
好友
13
蛮牛币
12132
威望
0
注册时间
2015-1-14
在线时间
905 小时
最后登录
2018-12-11
发表于 2018-4-10 10:30:40 | 显示全部楼层
6666666666666

回复

使用道具 举报

6蛮牛粉丝
1493/1500
排名
1650
昨日变化
8

21

主题

188

帖子

1493

积分

Rank: 6Rank: 6Rank: 6

UID
164326
好友
1
蛮牛币
3227
威望
0
注册时间
2016-8-26
在线时间
526 小时
最后登录
2018-12-10
 楼主| 发表于 2018-4-10 10:58:01 | 显示全部楼层
随幻Kaller 发表于 2018-4-10 10:13
其实吧 这种问题只要实现了 不一定要递归啊(即便它很容易实现)。。。。但是还是给你一个例子
[mw_shl_cod ...

老哥 你方法里面用的不是递归吗

回复

使用道具 举报

6蛮牛粉丝
1016/1500
排名
3836
昨日变化
11

5

主题

283

帖子

1016

积分

Rank: 6Rank: 6Rank: 6

UID
234410
好友
2
蛮牛币
934
威望
0
注册时间
2017-7-26
在线时间
338 小时
最后登录
2018-12-11
发表于 2018-4-10 11:28:37 | 显示全部楼层
但是还是给你一个例子(注意这句话的'但是')

回复

使用道具 举报

6蛮牛粉丝
1493/1500
排名
1650
昨日变化
8

21

主题

188

帖子

1493

积分

Rank: 6Rank: 6Rank: 6

UID
164326
好友
1
蛮牛币
3227
威望
0
注册时间
2016-8-26
在线时间
526 小时
最后登录
2018-12-10
 楼主| 发表于 2018-4-10 17:34:13 | 显示全部楼层
随幻Kaller 发表于 2018-4-10 11:28
但是还是给你一个例子(注意这句话的'但是')

......中华文化博大精深

回复

使用道具 举报

4四处流浪
328/500
排名
8419
昨日变化
3

0

主题

78

帖子

328

积分

Rank: 4

UID
236975
好友
0
蛮牛币
578
威望
0
注册时间
2017-8-11
在线时间
112 小时
最后登录
2018-12-5
发表于 2018-4-13 13:39:46 | 显示全部楼层
{:106:}{:106:}

回复

使用道具 举报

5熟悉之中
921/1000
排名
4499
昨日变化
2

4

主题

268

帖子

921

积分

Rank: 5Rank: 5

UID
268047
好友
0
蛮牛币
2094
威望
0
注册时间
2018-2-7
在线时间
327 小时
最后登录
2018-11-15
发表于 2018-4-16 09:45:21 | 显示全部楼层
谢谢分享!!!

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

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