什么软件摇号数字有零

JavaScript083

什么软件摇号数字有零,第1张

随机摇号器app是一款专为用户提供数字生成服务的软件。这款软让用户能够通过自定义并选择身份模式,可以实现很多功能,比如可以玩锤子剪刀布、谁是卧底、杀人游戏等,功能强大,感兴趣的朋友不要错过了。

软件功能

1、随机生成数字,支持重复和不重复两种模式,开始和结束数字任意自定义,支持0-9999。

2、不重复的模式下,可以实时看到剩余多少个可以摇。

3、抽签、抽奖、点名、分组、彩票选号等都可以用的到。

4、摇号记录会自动保存,并支持复制到剪贴板

给你VBA代码

Sub 摇号器()

Static n As Integer

Randomize

n = n + 1

s = "第" &n &"组:"

For i = 0 To 9

s = s &Int(10 * Rnd)

Next

Cells(n, 1) = s

End Sub

这两天看了一下,可以用这个。

http://www.cnblogs.com/eaglet/archive/2011/01/17/1937083.html#!comments

JS代码:

function Rnd(n, m) {

var s = []

var o = []

for (var i = 1 i <= n i++) {

s.push(i)

}

for (var i = 0 i < m i++) {

var j = n - i

var l = Math.floor(j * Math.random())

o.push(s[l])

s[l] = s[j - 1]

}

return o

}

list封装:

static IEnumerable<T> GetRandomSequence<T>(IList<T> array)

{

var rnd = new Random()

var list = array.ToList()

while (list.Count >0)

{

var point=rnd.Next(0,list.Count)

var rv=list[point]

list[point] = list[list.Count - 1]

list.RemoveAt(list.Count - 1)

yield return rv

}

}

扩展算法:

public static void RandomPermute<T>(this IList<T> data)

{

int count = data.Count

for (int i = 0 i < count i++)

{

int index0 = Random.Next(0, count - i)

int index1 = count - i - 1

T tmp = data[index0]

data[index0] = data[index1]

data[index1] = tmp

}

}

算法改进:

1、直接在原数组内交换位置即可,《算法导论》中有这个算法:

(1) 从N个数中随机取出一个数,与数组第一个数调换

(2) 从后N-1个数中随机取出一个数,与第二个数调换

2、让0表示第i项的值为i,输出或者交换的时候遇到0则输出下标,其余值减一。这样可以省掉初始化循环,

3、只用一个数组

public static int[] GetRandom(int total)

{

int[] array = new int[total]

for (int i = 0 i < total i++)

{ array[i] = i }

Random random = new Random()

int temp2

int end = total

for (int i = 0 i < total i++)

{

int temp = random.Next(end)

temp2 = array[temp]

array[temp] = array[end - 1]

array[end - 1] = temp2

end--

}

return array

}