1、利用公式求出Y值 第一列設(shè)置表頭為x,下面依次填入取值, 比如 x 1 2 3 4 ...... 第二例表頭設(shè)置為y,在下面表格中填入計算公式 如 =2*x+1 然后選中點右下角的十字型標(biāo)記,拖下去,和前面x數(shù)量一致。 2、然后選中數(shù)據(jù)源(即選中要進行操作的數(shù)據(jù)區(qū)域,這里指XY值所在區(qū)域。) 3、執(zhí)行菜單命令插入——圖表——XY散點圖 執(zhí)行命令,打開圖表向?qū)υ捒蜻xXY散點圖--選平滑線散點圖--完成 最后使用圖表向?qū)г跈M坐標(biāo)填入x值,縱坐標(biāo)填入y值,生成圖即可 將一次函數(shù)的Y列用公式編輯出來,分別填寫出當(dāng)取不同的X值時得到不的函數(shù)值,選擇函數(shù)值所在列,插入——圖表按提示操作。執(zhí)行菜單命令 執(zhí)行菜單命令
創(chuàng)新互聯(lián)公司專注于澄海企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城系統(tǒng)網(wǎng)站開發(fā)。澄海網(wǎng)站建設(shè)公司,為澄海等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)公司專業(yè)和態(tài)度為您提供的服務(wù)
構(gòu)造Pen的時候可以指定粗細,如果你指定為1,并且放大了10倍,最后就成10了,所以你指定小點就行了,比如 Dim p As New Pen(Color.Black, 0.01) 最終繪制的線的粗細不會小于1
看了你說遞歸的效率低。那么你可以不用的。
給出的方法就是先生成第一個排列,然后每次調(diào)用下面的函數(shù)給出下一個排列,這樣生成的效率很高,這個函數(shù)可以內(nèi)聯(lián)。
這個是很經(jīng)典的排列組合算法啊?在網(wǎng)上能搜到一大堆。
大概是那種帶指向的移動的算法。我給你搜一個吧。
我找了幾個,這個是我覺得說的比較清楚的,你可以仔細參考一下,看不懂的話再搜點別的好了。。
全排列的算法跟這個不太一樣的。需要有點改動的。
至于語言的話,應(yīng)該不會有太大問題吧。。basic版的確實比較少,現(xiàn)在我也比較懶不想動手寫。。還是要靠你自己啦。
★生成排列的算法:
比如要生成5,4,3,2,1的全排列,首先找出一個最小的排列12345, 然后依次調(diào)用n!次STL算法中的next_permutation()即可輸出所有的全排列情況。所以這種算法的細節(jié)就是STL algorithm中next_permutation()的實現(xiàn)機制。詳細的實現(xiàn)代碼,大伙可以參考侯捷的《STL源代碼剖析》,在這里我只說一下我的理解:
1 首先從最尾端開始往前尋找兩個相鄰元素,令第一個元素為*i,第二個元素為*ii,且滿足*i*ii,找到這樣一組相鄰的元素后。
2 再從最尾端開始往前檢驗,找出第一個大于*i的元素,令為*k,將i,k元素對調(diào)。
3 再將ii及ii之后的所有元素顛倒排列,此即所求之"下一個"排列。
prev_permutation()算法的思路也基本相同,只不過它們尋找的"拐點"不同,在next_permutation()算法中尋找的是峰值拐點,而在prev_permutation()算法中尋找的是谷值拐點。另外,在第二步中,prev_permutation()要找的是第一個小于*i的元素而不是第一個大于*i的元素。
具體例子,有空再舉,現(xiàn)在時間太晚了:)
★生成組合的算法:
如下面截圖所示,分全組合和r-組合兩種情況。
這里有一段核心代碼:
//--------------------------------------------------------
// Generate next combination (algorithm from Rosen p. 286)
//--------------------------------------------------------
public int[] getNext () {
if (numLeft.equals (total)) {
numLeft = numLeft.subtract (BigInteger.ONE);
return a;
}
int i = r - 1;
while (a[i] == n - r + i) {
i--;
}
a[i] = a[i] + 1;
for (int j = i + 1; j r; j++) {
a[j] = a[i] + j - i;
}
numLeft = numLeft.subtract (BigInteger.ONE);
return a; //這里返回的a數(shù)組,存儲的就是下標(biāo)的排列組合。
}
到這里,也許大伙會有一個疑問,假如要求的不是數(shù)字的排列組合,而是字符或字符串的排列組合呢?怎么辦?其實很簡單,你只要拿數(shù)組的下標(biāo)來做排列組合,返回他們下標(biāo)的排列組合,然后再到原數(shù)組中讀取字符串值,就可以輸出全部的排列組合結(jié)果。
Rnd[(number)]
number
的值決定了
Rnd
生成隨機數(shù)的方式
如果
number
的值
Rnd
生成
小于
每次都使用
number
作為隨機數(shù)種子得到的相同結(jié)果。
大于
序列中的下一個隨機數(shù)。
等于
最近生成的數(shù)。
省略
序列中的下一個隨機數(shù)。
====================
先討論沒有加randomize時
X小于0
如
rnd(-1)
以-1為種的隨機數(shù)永遠相同
X大于0
如
rnd(1)
系統(tǒng)會先生成隨機數(shù)列表
有N個隨機數(shù)
你每執(zhí)行一次rnd(1)就獲取列表中下一個隨機數(shù)
比如有這么個列表
程序開始時
得到0.7055475
執(zhí)行第二次rnd(1)得到0.533424
第三次0.5795186
你關(guān)閉程序重新打開
第一次得到還是0.7055475
.7055475
.533424
.5795186
.2895625
.301948
而你說的X0
X0沒差別
是錯的
Rnd(1)
Debug.Print
Rnd(-2)
和
Debug.Print
Rnd(-2)
Rnd(1)
結(jié)果是不一樣的
X等于0
最近生成的數(shù)
一般為科學(xué)型數(shù)值
這個值也是不變的
rnd(x)
省略x不寫
就和X0
效果一樣
=========================
Randomize
用
number
將
Rnd
函數(shù)的隨機數(shù)生成器初始化,該隨機數(shù)生成器給
number
一個新的種子值。如果省略
number,則用系統(tǒng)計時器返回的值作為新的種子值。
如果沒有使用
Randomize,則(無參數(shù)的)Rnd
函數(shù)使用第一次調(diào)用
Rnd
函數(shù)的種子值。
注意
若想得到重復(fù)的隨機數(shù)序列,在使用具有數(shù)值參數(shù)的
Randomize
之前直接調(diào)用具有負參數(shù)值的
Rnd。使用具有同樣
number
值的
Randomize
是不會得到重復(fù)的隨機數(shù)序列的。
一般在使用rnd獲取隨機數(shù)
都是
randomize
int(rnd*(上限-下限+1)+下限)
這2個函數(shù)的X都是省略不寫
Public Class Form1
Private Function jc1(ByVal q)
Dim i%, p%
p = 1
For i = 1 To q Step 1
p = p * i
Next
Return p
End Function
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim m!, n!, info1$, info2, C!, title$
title = "組合數(shù)計算小能手"
info1 = "請輸入m的值"
info2 = "請輸入n的值"
m = Val(InputBox(info1, title))
n = Val(InputBox(info2, title))
C = jc1(m) / jc1(n) / jc1(m - n)
Label1.Text = "結(jié)果是" " " C
End Sub
例子1:
Dim?result?As?ParallelLoopResult?=?Parallel.[For](0,?10,?Function(i)?
Console.WriteLine("{0},?task:?{1}?,?thread:?{2}",?i,?Task.CurrentId,?Thread.CurrentThread.ManagedThreadId)
Thread.Sleep(10)
End?Function)
Console.WriteLine(result.IsCompleted)
例子2:
Parallel.For(Of?String)(0,?20,?
Function()?
Console.WriteLine("init?thread?{0},??task?{1}",?Thread.CurrentThread.ManagedThreadId,?Task.CurrentId)
Return?String.Format("t:?{0}",?Thread.CurrentThread.ManagedThreadId)
End?Function,?
Function(i,?pls,?str)?
Console.WriteLine("body??i?{0}??str1?{1}??thread?{2}??task?{3}",?i,?str,?Thread.CurrentThread.ManagedThreadId,?Task.CurrentId)
Return?String.Format("i?{0}",?i)
End?Function,?
Function(str1)?
Console.WriteLine("finally?{0}",?str1)
End?Function)