当前位置:编程学习 > VB >>

如何利用程序编程实现自动产生随机数及一定范围数字的随机排序?

[size=32px]如何利用程序编程实现自动产生随机数及一定范围数字的随机排序?比如1-100之间随机产生一个随机数:
又比如1-100进行随机排序????请教各位!![/size] --------------------编程问答-------------------- [size=32如何利用程序编程实现自动产生随机数及一定范围数字的随机排序?比如1-100之间随机产生一个随机数:
又比如1-100进行随机排序????请教各位!![/px]size] --------------------编程问答-------------------- 给个函数,你自己看一下
三个参数分别是,随机数起始值,最大值,生成随机数的个数
Function fc_GetRndNum(n_min As Long, n_max As Long, n_GetNum As Long)          '生成随机数字的自定义函数
If n_GetNum > n_max - n_min + 1 Then
   MsgBox "随机数的个数超出取值范围,无法生成满足要求的不重复随机数", vbOKOnly + vbCritical, "程序出错提示"
   Exit Function
End If
Randomize Timer
Dim a_num() As Long
ReDim a_num(n_GetNum - 1)
For i = 0 To n_GetNum - 1
lp:
    n_temp = Int(n_min + Rnd * (n_max - n_min + 1))
    For j = 0 To n_GetNum - 1
        If n_temp = a_num(j) Then GoTo lp
    Next j
    a_num(i) = n_temp
Next i
fc_GetRndNum = a_num
End Function
--------------------编程问答--------------------

Private Sub Command1_Click()
   '1、生产100个1-100的随机数,装入irndNum数组
   Randomize Timer
   Dim i As Integer, irndNum(1 To 100) As Integer
   For i = 1 To 100
       irndNum(i) = Int(Rnd * 100) + 1
       Debug.Print Format(irndNum(i), "@@@@");
       If i Mod 25 = 0 Then Debug.Print
   Next
   Debug.Print String(50, "-")
   
   '2、随机排序100个数
   Dim j As Integer, iNum(1 To 100) As Integer
   Dim tmp1 As Integer, tmp2 As Integer
   For j = 1 To 100 '顺序装入1-100
       iNum(j) = j
       Debug.Print Format(iNum(j), "@@@@");
       If j Mod 25 = 0 Then Debug.Print
   Next
   Debug.Print String(50, "-")
   For j = 1 To 100 '随机排序这100个数
       tmp2 = Int(Rnd * 100) + 1
       tmp1 = iNum(j)
       iNum(j) = iNum(tmp2)
       iNum(tmp2) = tmp1
   Next
   
   For j = 1 To 100 '观查结果
       Debug.Print Format(iNum(j), "@@@@");
       If j Mod 25 = 0 Then Debug.Print
   Next
   Debug.Print String(50, "-")
End Sub

--------------------编程问答-------------------- 随机排序算法请参考这个
#include <stdio.h>
#include <time.h>
int d[6];
int i,n,a,b,t;
int c,j;
void main() {
    srand(time(NULL));
    printf("shuffle 0..n-1 demo\n");
    for (n=1;n<=5;n++) {/* 测试1~5个元素 */
        printf("_____n=%d_____\n",n);
        j=1;
        for (c=1;c<=n;c++) j=j*c;/* j为n! */
        j*=n*2;
        for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
            for (i=0;i<n;i++) d[i]=i;/* 填写0~n-1 */
            for (i=n;i>0;i--) {/* 打乱0~n-1 */
                a=i-1;b=rand()%i;
                if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
            }
            printf("%04d:",c);
            for (i=0;i<n;i++) printf("%d",d[i]);
            printf("\n");
        }
    }
    printf("shuffle 1..n demo\n");
    for (n=1;n<=5;n++) {/* 测试1~5个元素 */
        printf("_____n=%d_____\n",n);
        j=1;
        for (c=1;c<=n;c++) j=j*c;/* j为n! */
        j*=n*2;
        for (c=1;c<=j;c++) {/* 测试n*2*n!次 */
            for (i=1;i<=n;i++) d[i]=i;/* 填写1~n */
            for (i=n;i>1;i--) {/* 打乱1~n */
                a=i;b=rand()%i+1;
                if (a!=b) {t=d[a];d[a]=d[b];d[b]=t;}
            }
            printf("%04d:",c);
            for (i=1;i<=n;i++) printf("%d",d[i]);
            printf("\n");
        }
    }
}
--------------------编程问答-------------------- 如何利用编程实现将adodc1控件连接的数据库中的内容筛选后复制到adodc2连接的数据库里???
例如:[size=32px]adodc1连接的数据库的其中一栏为“分数”,
      现在要求筛选出分数在80-90之间所有数据成员,
      并将其复制到adodc2控件连接的数据库!数据库内容包括:学号,姓名,成绩
[/size]
谢谢!!!!
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,